我正在开发一些遗留系统的改进有一些时间
我有一个这样的课程
class MyPersistentClazz
{
private String aTPlace;
public void setATPlace(.......){......}//yes mistyping
@Column(name="atPlaceOrder")
public String getATPlace(){return aTPlace;}
}
他们通常使用此方法加载此类
final MyPersistentClazz clazz = (MyPersistentClazz)session.createCriteria(MyPersistentClazz.class).add(idEq(id)).uniqueResult();
并使用加载和获取方法并且正常工作。
但是当我使用投影时会出现问题。
final Projection p=Projections.projectionList().add(Projections.property("d.aTPlace"),"aTPlace");
抛出
Exception in thread "main" org.hibernate.QueryException: could not resolve property:
我的问题是......
使用投影时我认为Hibernate正在调用每个属性的setter这个断言好吗?
使用criteria.uniqueResult或加载或获取Hibernate时使用单独的字段属性访问?
或者为什么与某些人合作而不与其他人一起工作?
我们只使用注释而非XML。
非常感谢。
答案 0 :(得分:1)
Hibernate如何与bean一起使用取决于你如何注释它。如果您注释实例变量,那么Hibernate将使用直接注入并绕过您的Set方法。否则,它将使用您的Set方法。
是否将您的属性名称错误地转换为Set方法名称?尝试将属性名称更改为更简单的名称(不使用该系列大写字母),并确保投影中属性的大小写正确。