@ManyToOne(可选= false)和@Column(nullable = false)之间有什么区别?
在JPA中,我很困惑何时使用属性optional=false
和注解@Column(nullable=false)
。 有什么不同?
@Column(nullable=false)
是生成模式的指令。 在类中生成的数据库列在实际数据库中将被标记为不可空。
optional=false
是一个运行时指令。 它所做的主要function与延迟加载有关。 你不能懒加载一个非集合映射的实体,除非你记得设置optional = false(因为Hibernate不知道是否应该有一个代理或一个null,除非你告诉它空值是不可能的,所以它可以产生一个代理。)
这两个是用来防止空值,但如果你介意null应该被阻止在…
数据库层(你想用JPA生成模式) – >使用@Column(nullable=false)
运行时 (和联系数据库之前) – >使用optional=false
(比第一次检查快得多)。
如果你想要两种能力,那就用它们。