微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Spring数据JpaRepository

如何解决使用Spring数据JpaRepository

我在实现过程中遇到了一个棘手的问题,我要使用Spring数据JpaRepository将数据持久化到Postgressql DB中

在我的Entity类中,我有以下几列:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true,nullable = false)
    private int id;
    
    @Column(name = "field1",nullable = false,length = 16)
    private String field1;

    @Column(name = "field2",length = 16)
    private String field2;

    @Column(name = "field3",length = 16)
    private String field3;

起初我避免将上面的字段声明为复合字段,因为有许多字段要作为复合键处理。我以为Java代码检查会在所有情况下都能解决问题

因此,基本上,我必须基于field1,field2和field3保持每一行的唯一性。那是我在Java代码中检查的基本要求,即如果DB1中存在field1,field2和field3的组合,那么我曾经抛出过Java异常

没有两行可以重复这些值。一切都很好,直到在某些错误的业务场景下对应用程序进行了测试为止,这种情况在生产中永远不会发生,但是会被错误地运行

现在发生的是,如果在完全相同的实例上触发了2个请求,并且上面的3个字段完全相同(通过脚本),则它们都进入了数据库,因为它们都获得了错误的输入检查

是否将所有这些声明为一个组合键可以解决这种情况?

解决方法

除了JPA约束,您还应该在数据库中定义唯一约束。

@Entity
@Table(uniqueConstraints={
    @UniqueConstraint(columnNames = {"field1","field2","field3"})
}) 
public class MyEntity {
  ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。