JPA nullable = false列在更新时设置为null

时间:2019-02-27 08:58:53

标签: java hibernate jpa persistence uuid

我试图将UUID分配给我不想在任何更新中更改的插入字段。插入成功,并且UUID成功保存在字段中。但是在更新时,尽管我在其上设置了@Column(nullable=false),该字段仍被设置为空。

这意味着我得到

由以下原因引起:org.postgresql.util.PSQLException:错误:“ id”列中的空值违反了非空约束   详细信息:失败行包含(null,2019-02-26、1、6、2、103、3066、12、2021.01,AAC,IAT,690000、0、4,https://photo..。)错误。

我已检查并正在尝试更新,因此可以调用preupdate挂钩。

@Data
@Entity
@IdClass(CarId.class)
public class Car {

  @Id
  private String date;

  @Id
  private int auctionId;

  @Id
  private int auctionNumber;

  @Column(nullable = false)
  private UUID id;

  @PrePersist
  private void assignUuid() {
      this.setId(UUID.randomUUID());
  }
}

汽车ID如下:

@Embeddable
@Data
@EqualsAndHashCode
public class CarId implements Serializable{
    private String date;

    private int auctionId;

    private int auctionNumber;
}

我希望在任何更新中都不要更改相同的UUID。

0 个答案:

没有答案