如何让Hibernate忽略一个方法?
这个问题基本上与这个问题相反。
我有一个像这样的方法:
public boolean isVacant() { return getEmployeeNum() != null && getEmployeeNum().equals("00000000"); }
当我加载它时,Hibernate抱怨我没有名为vacant
属性。 但我不想要一个名为vacant
的属性 – 我不需要存储那些数据 – 它只是逻辑。
Hibernate说:
org.hibernate.PropertyNotFoundException:在com.mycomp.myclass类中找不到属性空置的setter …
是否有一个注释可以添加到我的isVacant()
方法中以使Hibernate忽略它?
将@Transient
添加到方法然后Hibernate应该忽略它。
引用Hibernate文档 :
除非您将实体注释为
@Transient
,否则实体的每个非静态非瞬态属性(字段或方法取决于访问类型)都被视为持久性。
RNJ是正确的,但我可能会补充为什么会发生这种情况:
我猜你已经注释了持久化类的getter。 java bean使用的前缀是“set”和“get”,它们用于读取和写入变量,但也有前缀“is”,它用于布尔值(而不是“get”)。 当Hibernate看到你的getter-annotated持久化类,并找到一个方法“isVacant”时,它假定存在一个属性“vacant”,并假设还有一个“set”方法。
因此,要修复它,您可以添加@Transient注释,也可以将方法的名称更改为不以“is”开头的内容。 如果您的类在字段上注释而不是get-methods,我认为这不会是一个问题。
- 如何在oibernate中将oracle timestamp映射到适当的java类型?
- 如何使用hibernate条件实现使用内部联接对象选择查询
- Spring源码套件spring3 + Hibernate4 + maven 3 + MySQL 5
- JPA使用替代“persistence.xml”
- Hibernate注释放置问题
- 解释使用Hibernate映射自动递增的复合id序列的行为
- org.postgresql.util.PGobject无法强制转换为org.postgis.PGgeometry
- 使用Spring 3进行基于注释的事务管理和对象映射的最小Hibernate 4 XML配置?
- Java ZonedDateTime保存在数据库中