代码之家  ›  专栏  ›  技术社区  ›  Naanavanalla

禁用spring data jpa中的自动更新

  •  0
  • Naanavanalla  · 技术社区  · 7 年前

    我有JPA @Entity findBy 将由 JPA persistent state ,然后更新实体中的一些字段,然后将实体传递给验证。如果验证失败,则不更新;如果验证成功,则保留实体。

    save() ,记录将始终更新,因为JPA检测到实体已更改并将其标记为更新。

    如何避免这种行为?

    我的实体类

    @Entity
    @Table( name = "user" )
    @Data
    @EqualsAndHashCode( of = { "id" } )
    @ToString( of = { "id" } )
    public class UserModel {
    
    @Id
    @GeneratedValue( strategy = GenerationType.AUTO )
    @Column( name = "u_id" )
    private Long id;
    
    @Column( name = "u_first_name" )
    private String firstName;
    
    @Column( name = "u_last_name" )
    private String lastName;
    
    @Column( name = "u_email_id" )
    private String emailId;
    
    @Column( name = "u_password" )
    private String password;
    
    @Column( name = "u_mobile_number" )
    private String mobileNumber;
    
    @Column( name = "u_created_at" )
    private Calendar createdAt;
    
    @Column( name = "u_is_active" )
    private Boolean isActive;
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Jens Schauder    7 年前

    我看到两种选择:

    1. 当验证失败时,从 EntityManager .

    2. 在分离模式下进行整个更新和验证,即在没有 @Transactional

      这可能有点简单,但缺点是加载所有受影响的实体两次。