我正在使用hibernate注释。如何向POJO对象添加方法?例如,我有“getChildNodes”方法,与数据库关联,但我还想添加递归方法“getAllChildNodes”。我得到“org.hibernate.PropertyNotFoundException:当我这样做时,找不到类中属性进展的setter”异常。
答案 0 :(得分:9)
如果我将此解释为“如何添加与持久性无关的方法”,那么您需要在@Transient
方法上使用getAllChildNodes()
注释
答案 1 :(得分:1)
有两种方法可以定义实体的结构。
在getter方法上使用注释时,Hibernate假定每个getXxx(和布尔类型的isXxx)表示持久属性的定义。即使特定的getter不包含任何注释,这也是有用的,就像你的情况一样。
Hibernate还希望为每个持久属性找到匹配的setter方法。在你的情况下,这是缺少的,并导致异常。
您可以通过将自定义getter声明为@Transient
来解决此问题,该getter表示此getter不代表持久属性。另一种方法是将实体转换为在实例变量上使用注释。后者将是我个人的选择。
答案 2 :(得分:-1)
打开.java文件并编写名为getAllChildNodes()
的方法。
Hibernate不会为您编写代码,它会将数据库中的字段映射到您的代码中。就这样。如果您希望在域/模型类中拥有额外的逻辑,除了属性的常规getter和setter之外,您还必须自己添加它们。