当前位置: 首页 > 面试题库 >

@ManyToOne(optional = false)与@Column(nullable = false)有什么区别

米飞龙
2023-03-14
问题内容

在JPA中,我什么时候使用属性optional=false和注释感到困惑@Column(nullable=false)。有什么区别?


问题答案:

@Column(nullable=false)是用于生成架构的指令。在类中生成的数据库列将在实际数据库中标记为不可为空。

optional=false是运行时指令。它所做的主要功能是与延迟加载有关。您不能延迟加载非集合映射的实体,除非您记得设置了optional =
false(因为Hibernate不知道那里应该有一个代理还是一个null,除非您告诉它null是不可能的,否则它可以生成代理人。)



 类似资料:
  • 问题内容: 和JPA持久性之间有什么区别? 问题答案: Gordon Yorke(EclipseLink体系结构委员会成员,TopLink核心技术负责人,JPA 2.0专家组成员)在此主题上写了一个很好的答案,因此,我不用表述他,而是引用他的答案: 和 之间的区别是评估它们的范围。’ ‘ 的定义讨论了属性和字段值,并建议应在运行时内评估此功能。“ ”仅指数据库列。 如果实现选择实现,则这些属性应由

  • 问题内容: 我有一个带注释的实体。 如果我负责创建脚本,为什么要指定何时可以使用关键字在数据库中创建列?是否有任何示例显示在字段中使用此属性的好处? 问题答案: 更好的错误消息和错误处理,尤其是如果您还添加了JSR303 @NotNull批注 。 如果您将列创建为,但不告诉JPA它不是null,则JPA会假定null值可以。当您尝试使用空值保存对象时,它将继续将其发送到数据库,并且您会收到数据库级

  • 问题内容: 当它们出现在的字段/获取器上时,它们@Entity之间有什么区别?(我通过Hibernate保留了Entity )。 它们每个都属于什么框架和/或规范? 位于中。在中说 带注释的元素不能为空 但是它没有提到数据库中元素的表示形式,那么为什么要在列中添加约束呢? 问题答案: 是JSR 303 Bean验证批注。它与数据库约束本身无关。由于Hibernate是JSR 303的参考实现,因此

  • 问题内容: 当它们出现在的字段/获取器上时,它们之间有什么区别?(我通过 Hibernate 保留了Entity )。 它们每个都属于什么框架和/或规范? 位于中。在javadoc中说 带注释的元素不能为null 但是它没有说数据库中元素的表示形式,那么为什么要在列中添加约束呢? 问题答案: 是JSR 303 Bean验证 批注。它与数据库约束本身无关。由于Hibernate是JSR 303的参考

  • 问题内容: 我想做这个列不能为null,但是当我在数据库中插入一个寄存器值null时,这允许我插入。我阅读了文档,但我不知道为什么不起作用。 谢谢 更新:我正在使用 Toplink 和java org.eclipse.persistence.eclipselink:2.4.2 。 问题答案: 我认为如果您使用EntityManager的实现生成模式,则会使用可为空的。我不知道是否也必须在持久化实体

  • 问题内容: 编辑: 我在@ coldspeed,@ wen-ben,@ ALollz指出的字符串中犯的菜鸟错误。答案非常好,因此我不会删除此问题以保留这些答案。 原文: 我已经阅读了这个问题/答案groupby.first()和groupby.head(1)有什么区别? 该答案说明差异在于处理价值上。但是,当我打电话给时,他们俩都选择了。 此外,Pandas具有与和类似的功能,并且 有什么差异有?