JPA @Column定义不适用于读取操作?

时间:2018-03-16 09:51:41

标签: java jpa

鉴于我的实体Carmodel不接受NULL s

@Table(name = "CAR")
@Entity
public class Car extends AbstractEntity<Long> {

    @Column(name = "MODEL", nullable = false)
    private final String model;

}

当我准备数据库架构时,手动插入数据(包括NULL列中的MODEL)并启动应用程序,它就无法启动。

为什么?

@Column注释中指定的条件是否仅适用于插入/更新操作,而不适用于读取操作?

1 个答案:

答案 0 :(得分:0)

是的,您可以使用nullable = false读取空值。但是当您尝试使用model = null保存或更新实体时,会抛出JPA杠杆错误。

查看specification for nullable

此JPA约束只是禁止将无效数据写入数据库,以便不会无理由地调用它(顺便说一句,您应该在数据库中具有与JPA中相同的约束)。 / p>

这些约束与已存在的数据无关。这就是为什么你的应用程序无法启动的原因。

请查看this答案以获得更好的解释。