鉴于我的实体Car
列model
不接受NULL
s
@Table(name = "CAR")
@Entity
public class Car extends AbstractEntity<Long> {
@Column(name = "MODEL", nullable = false)
private final String model;
}
当我准备数据库架构时,手动插入数据(包括NULL
列中的MODEL
)并启动应用程序,它就无法启动。
为什么?
@Column
注释中指定的条件是否仅适用于插入/更新操作,而不适用于读取操作?
答案 0 :(得分:0)
是的,您可以使用nullable = false
读取空值。但是当您尝试使用model = null
保存或更新实体时,会抛出JPA
杠杆错误。
此JPA约束只是禁止将无效数据写入数据库,以便不会无理由地调用它(顺便说一句,您应该在数据库中具有与JPA中相同的约束)。 / p>
这些约束与已存在的数据无关。这就是为什么你的应用程序无法启动的原因。
请查看this答案以获得更好的解释。