org.hibernate.QueryException:could not resolve
Customer.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.imooc.entity.Customer" table="customer" catalog="webshop">
<id name="cuid" type="java.lang.Integer">
<column name="cuid" />
<generator class="increment" />
</id>
<property name="cname" type="java.lang.String">
<column name="cname" length="10" not-null="true" />
</property>
<property name="tel" type="java.lang.String">
<column name="tel" length="11" />
</property>
<property name="address" type="java.lang.String">
<column name="address" length="20" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="20" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="2" />
</property>
<property name="description" type="java.lang.String">
<column name="description" length="50" />
</property>
<property name="cage" type="java.lang.Integer">
<column name="cage" />
</property>
<property name="birthday" type="java.util.Date">
<column name="birthday" length="10" />
</property>
<set name="orderforms" inverse="true">
<key>
<column name="customer" />
</key>
<one-to-many class="com.imooc.entity.Orderform" />
</set>
</class>
</hibernate-mapping>
CustomerTest类的测试方法:
@Test
public void testIn(){
String hql = "from Customer c where c.age not in(20,40)";
Query query = session.createQuery(hql);
List<Customer> customers = query.list();
for(Customer customer:customers){
System.out.println("name:"+customer.getCname());
System.out.println("age:"+customer.getCage());
}
}
出现这种错误是由于字段与数据表中的字段不匹配,数据库的表中我写入的字段是是cage,映射文件Customer.hbm.xml也是cage,所以c.age应该为c.cage。
如果加入我的表的字段是Person_Name,那么在hbm.xml文件中可能就是personName,在使用字段的时候就要特别注意。