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

JPA中的@Basic(Optional = false)vs @Column(nullable = false)

巫欣荣
2023-03-14
问题内容

@Basic(optional = false)@Column(nullable = false)JPA持久性之间有什么区别?


问题答案:

Gordon Yorke(EclipseLink体系结构委员会成员,TopLink核心技术负责人,JPA
2.0专家组成员)在此主题上写了一个很好的答案,因此,我不用表述他,而是引用他的答案:

optional和 之间的区别nullable是评估它们的范围。’ optional
的定义讨论了属性和字段值,并建议应在运行时内评估此功能。“ nullable”仅指数据库列。

如果实现选择实现,optional则这些属性应由持久性提供程序在内存中进行评估,并在将SQL发送到数据库之前引发异常,否则在使用’
updatable=false’‘ optional‘时将永远不会报告违规。



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

  • 问题内容: 在JPA中,我什么时候使用属性和注释感到困惑。有什么区别? 问题答案: 是用于生成架构的指令。在类中生成的数据库列将在实际数据库中标记为不可为空。 是运行时指令。它所做的主要功能是与延迟加载有关。您不能延迟加载非集合映射的实体,除非您记得设置了optional = false(因为Hibernate不知道那里应该有一个代理还是一个null,除非您告诉它null是不可能的,否则它可以生成

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

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

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

  • 以下是基本圆柱图表的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个基本的Colummn Chart的例子。 配置 (Configurations) 我们使用ColumnChart类来显示基于colummn的图表。 // colummn chart ColumnChart chart = new Colum