Java,Hibernate注释,如何向POJO对象添加方法?

时间:2010-06-11 13:09:32

标签: java hibernate annotations pojo

我正在使用hibernate注释。如何向POJO对象添加方法?例如,我有“getChildNodes”方法,与数据库关联,但我还想添加递归方法“getAllChildNodes”。我得到“org.hibernate.PropertyNotFoundException:当我这样做时,找不到类中属性进展的setter”异常。

3 个答案:

答案 0 :(得分:9)

如果我将此解释为“如何添加与持久性无关的方法”,那么您需要在@Transient方法上使用getAllChildNodes()注释

答案 1 :(得分:1)

有两种方法可以定义实体的结构。

  • 对实体的实例变量或
  • 使用注释
  • 在实体的getter方法上使用注释

在getter方法上使用注释时,Hibernate假定每个getXxx(和布尔类型的isXxx)表示持久属性的定义。即使特定的getter不包含任何注释,这也是有用的,就像你的情况一样。

Hibernate还希望为每个持久属性找到匹配的setter方法。在你的情况下,这是缺少的,并导致异常。

您可以通过将自定义getter声明为@Transient来解决此问题,该getter表示此getter不代表持久属性。另一种方法是将实体转换为在实例变量上使用注释。后者将是我个人的选择。

答案 2 :(得分:-1)

打开.java文件并编写名为getAllChildNodes()的方法。

Hibernate不会为您编写代码,它会将数据库中的字段映射到您的代码中。就这样。如果您希望在域/模型类中拥有额外的逻辑,除了属性的常规getter和setter之外,您还必须自己添加它们。