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

Hibernate是否总是需要一个setter?

堵才哲
2023-03-14
问题内容

我们有一些Hibernate getter方法,它们都用@Column和标注@Basic

如果没有相应的设置器,则会出现异常。为什么是这样?

在我们的例子中,我们派生了从getter返回的值(将其存储在DB中),而setter没有任何功能目的。因此,我们只有一个空方法可以解决错误情况。


问题答案:

正如其他人提到的那样,如果您注释属性getter方法,则Hibernate在从数据库读取值时会使用setter。基本上,Hibernate假设最终写入数据库的所有内容都需要从数据库中读取。这意味着,如果您对一个getter进行注释,则在从数据库中读取对象时,它需要调用setter。

您可以将设置器设为私有(Hibernate将使用反射来访问设置器)。这是在仍然使用Hibernate进行关系映射的同时保留类协定的好方法。

如果该字段是从类中的其他属性派生的,那么为什么要将其存储在数据库中?您可以使用@Transient批注来标记不应将其存储在数据库中的字段。您甚至可以使用@Formula注释使Hibernate为您派生该字段(它通过使用发送到数据库的查询中的公式来完成此操作)。



 类似资料:
  • 问题内容: 我们有一些Hibernate getter方法,它们都用和标注。 如果没有相应的设置器,则会出现异常。为什么是这样? 在我们的例子中,我们派生了从getter返回的值(将其存储在数据库中),而setter没有任何功能目的。因此,我们只有一个空方法可以解决错误情况。 问题答案: 正如其他人提到的那样,如果您注释属性getter方法,则Hibernate在从数据库读取值时会使用setter

  • 问题内容: 我正在使用Hibernate Search,文档和书籍说我在id字段上需要@DocumentId,以便Hibernate Search可以知道如何将索引映射到对象。 没有代码中的@DocumentId,我的代码似乎运行良好。Hibernate Search是否变得足够聪明,以至于@Id字段是一个很好的默认值?是否会引起一些不明显的问题? 谢谢你的时间! 问题答案: 如果您使用的是老式的

  • 或者只有一个属性userid类型整数是有效的吗?这样,jpql查询如下所示:

  • 问题内容: 我继承了一个Websphere Portal项目,该项目使用Hibernate 3.0连接到SQL Server数据库。 这个项目中大约有130个Hibernate表类。它们都实现了可序列化。它们均未声明serialVersionUID字段,因此Eclipse IDE对所有这些类均显示警告。 这些类是否真正需要实现Serializable? 如果是这样,是否有任何工具可以一次将生成的s

  • 随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs

  • 问题内容: 在redux文档中给出的示例中,似乎总是从中间件返回一些东西。但是,当我打电话不返回时,一切似乎都正常。 在redux源中,它似乎正在调用每个中间件的返回值。 这使我相信,它为所有中间件运行后提供了一种可选的方式来运行调度。 有人可以确认我们是否必须始终从中间件返回值吗?为什么? 问题答案: 我实际上是前几天在这条推文上发表的。 默认情况下,该方法返回传递的操作。由于中间件管道环绕,因