您的位置:首页 > 产品设计 > UI/UE

异常org.hibernate.QueryException: could not resolve property的原因

2013-10-24 18:03 344 查看
今天遇到一个非常古怪的问题 异常org.hibernate.QueryException: could not resolve property,这是自己在测试整合的Hib遇到的问题,处于对ecplise的信任,一直感觉是我调用的问题

List list=mPersonDAO.findByProperty("firstName", "Zhang");

这是测试代码,想筛选 firstName 为Zhang的数据

一下是系统生成的源码

public List findByProperty(String propertyName, Object value) {
log.debug("finding Person instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Person as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}


这是系统生成的 map

<hibernate-mapping>
<class name="com.database.Person" table="person" catalog="test">
<composite-id name="id" class="com.database.PersonId">
<key-property name="id" type="java.lang.Integer">
<column name="id" />
</key-property>
<key-property name="firstName" type="java.lang.String">
<column name="FirstName" length="5000" />
</key-property>
<key-property name="lastName" type="java.lang.String">
<column name="LastName" length="5000" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>


百度了很多,也没有明确的问题,崩溃了!!!!!!!

有没有发现 Person里面还有一层id, 有木有 有木有 坑爹!!!!!

所以系统生成的代码不对

String queryString = "from Person as model where model."
+ propertyName + "= ?";


要在套一层

String queryString = "from Person as model where model.id."
+ propertyName + "= ?";


这样就OK 了!!尼玛!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: