@ManyToOne(可选=假)与@Column(nullable=false)有什么区别
在JPA中,我对何时使用属性和注释感到困惑。有什么区别?optional=false
@Column(nullable=false)
在JPA中,我对何时使用属性和注释感到困惑。有什么区别?optional=false
@Column(nullable=false)
@Column(nullable=false)
是用于生成架构的指令。在实际数据库中,从类生成的数据库列将被标记为不可为 null。
optional=false
是运行时指令。它所做的主要功能与延迟加载有关。你不能延迟加载非集合映射实体,除非你记得设置 optional=false(因为 Hibernate 不知道那里是否应该有一个代理或一个 null,除非你告诉它 null 是不可能的,所以它可以生成一个代理。
两者都用于防止空值,但是如果您介意在...
数据库层(并且您希望使用 JPA 生成模式)-->使用@Column(nullable=false)
运行时(在联系数据库之前)-->使用(比第一次检查快得多)。optional=false
如果你想要这两种能力,请同时使用它们。