【发布时间】:2021-10-07 12:20:15
【问题描述】:
下面是我的实体类,我在类的 EnumType 变量上添加了default 约束。但是,虽然数据库中的值,但它没有采用该值并给出ContraintViolation。
实体
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "employee")
public class Employee{
@Id
private String id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "email", nullable = false)
private String email;
@Column(name = "language", nullable = false, columnDefinition = "VARCHAR(10) default 'ENGLISH'")
@Enumerated(EnumType.STRING)
private Language language;
}
在这里,如果我从 Language Enum 中删除 nullable,则该语言将保存为 null。为什么不将默认值设为ENGLISH
【问题讨论】:
-
除非您使用 JPA 动态插入,否则插入查询将包含
language=NULL并且您的默认值不会被考虑在内。您还可以做的是将默认值放在实体的字段上,例如private Language language = Language.ENGLISH; -
@NicoVanBelle 我尝试在实体中设置语言字段,它不起作用
标签: spring spring-boot hibernate jpa