我有一个枚举类型的属性:
@Basic
@Column(name = "payment_status", columnDefinition = "varchar(32) default 'ENTERED'", nullable = false)
@Enumerated(EnumType.STRING)
private PaymentStatus paymentStatus;
我想从枚举中获取字段的默认值。
我遇到了错误:
org.hibernate.PropertyValueException: not-null property references a null or transient value
该字段不能为空
当我想要创建一个对象并将其保存在数据库中时,如果没有输入此字段(PaymentStatus),就会出现错误。
编辑:
@Basic
@ColumnDefault(value = "ENTERED")
@Column(name = "payment_status", nullable = false)
@Enumerated(EnumType.STRING)
private PaymentStatus paymentStatus = PaymentStatus.ENTERED;
为什么它不能工作?
private PaymentStatus paymentStatus = PaymentStatus.ENTERED;
- Andreasnew
),并且您的代码调用getPaymentStatus()
,则代码将获取默认值,而不是null
值,这正是您想要的。 - Andreas@ColumnDefault(value = "ENTERED")
与columnDefinition = "... default 'ENTERED'"
相同,即它适用于DDL,因此仅适用于数据库。 - Andreas