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

有吸气剂时,Hibernate是否总是需要一个setter?

乐正乐湛
2023-03-14
问题内容

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

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

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


问题答案:

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

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

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



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

  • 问题内容: 我知道Java中关于布尔型getter的约定包括前缀“ is”。 但是,如果主题是复数呢?也就是说,如果我不想知道某个商店是否已营业,而又想知道所有商店是否已营业怎么办? 用英语没有意义。 我很想写这样的getter: 我认为这是有意义的,但我一直在别人告诉我,我应该只是吮吸它,抛弃主题动词协议和使用,,。 无论如何,对于在复数主题上运算的布尔型吸气剂,我该怎么办? 问题答案: 我不记

  • 问题内容: 有人可以帮助我迅速了解正确使用吸气剂和吸气剂的方法。我对它的印象与说Java不一样。 这是Swift中用于存储和访问类变量的正确用法吗? 问题答案: 斯威夫特提供了更结构化的方法来和比Java。 你可以,但你应该 不会 ,写getter和setter方法就像你在你的代码一样。 相反,(如果您使用)只需声明可见性为non的属性即可(例如,在我的示例中)。这样,您班级外的呼叫者将可以查看属

  • 问题内容: 我在读这篇文章,了解为什么和邪恶。本文没有说过 不要 使用它们,而是告诉您以限制使用这些方法的方式进行思考,或者引用该文章: 不要要求您进行工作所需的信息;询问具有信息的对象为您完成工作。 当您需要在GUI中显示数据但没有getter方法时会发生什么?本文简要介绍了这一点,但并不完整。它提到将JComponent传递给类,但是如果您要进行GUI更改,则可能需要进行很多工作才能修复。 例

  • 问题内容: 我有一堂课,看起来像下面这样: 我的hibernate映射文件按如下所示映射属性: 我收到以下错误: 看来hibernate不喜欢我的大写字母。我该如何解决? 问题答案: 应该管用…

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