异常org.hibernate.QueryException: could not resolve property的原因
今天遇到一个非常古怪的问题 异常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 了!!尼玛!!
浙公网安备 33010602011771号