Java Hibernate字段访问属性或基于属性的访问

时间:2014-04-25 14:32:51

标签: java hibernate projection

我正在开发一些遗留系统的改进有一些时间

我有一个这样的课程

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。

非常感谢。

1 个答案:

答案 0 :(得分:1)

Hibernate如何与bean一起使用取决于你如何注释它。如果您注释实例变量,那么Hibernate将使用直接注入并绕过您的Set方法。否则,它将使用您的Set方法。

是否将您的属性名称错误地转换为Set方法名称?尝试将属性名称更改为更简单的名称(不使用该系列大写字母),并确保投影中属性的大小写正确。