我是Hibernate的新手,我试图动态加入更多的表。我用三个表格构建了一个例子:员工,地址,国家。我想检索某个国家的所有员工。在这里我的配置文件:休眠:动态连接多个表
<class entity-name="Employee">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="firstName" column="first_name" type="string"/>
<property name="lastName" column="last_name" type="string"/>
<property name="salary" column="salary" type="int"/>
<many-to-one name="address" column="address" unique="true"
class="Address" not-null="true"/>
</class>
<class entity-name="Address">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="street" column="street_name" type="string"/>
<property name="city" column="city_name" type="string"/>
<property name="state" column="state_name" type="string"/>
<property name="zipcode" column="zipcode" type="string"/>
<many-to-one name="country" column="country" unique="true"
class="Country" not-null="true"/>
</class>
<class entity-name="Country">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
<property name="code" column="code" type="string"/>
</class>
如果我做
List employees = session.createCriteria("Employee")
.createCriteria("address")
.createCriteria("country")
.add(Restrictions.eq("code","IT"))
.list();
我得到正确的结果回来,但我的目标不是要手动指定开始表和筛选器表之间的整个路径:我想是休眠为我工作。我想编写这样的事:
List employees = session.createCriteria("Employee")
.createCriteria("country")
.add(Restrictions.eq("code","IT"))
.list();
,但我得到的错误信息
org.hibernate.QueryException: could not resolve property: country of: Employee
好的,我理解你的比较。关键是Hibernate有一个查询(构建器)引擎,但它不能像我所想的那样动态地在图中的两个实体之间找到路径。 – Zardo 2014-11-11 09:55:30
你是对的。 Hibernate需要在查询中加入一个从员工到国家/地区实体的路径 – OndrejM 2015-01-07 11:19:19