HQL:隐式关联加入不起作用

时间:2013-06-22 06:29:30

标签: java hibernate orm hql

我正在为我的应用程序使用Hibernate 3.2.5。

我有一个Dept表和一个Employees表。

Dept.java

private int deptId;
private String deptName;
private Map empMap = new HashMap();
//Getters and Setters

Employees.java

private int empId;
private String empName;
private int deptId;
private int age;
private String sex;
private Dept dept;
//Getters and Setters

这两者之间的联系:

<map name="empMap" inverse="false" cascade="all">
      <key column="DEPT_ID"></key>
      <map-key formula="EMP_ID" type="integer"></map-key>
      <one-to-many class="com.jdbc.Employees"/>
  </map>

当我尝试以下声明时:

Query hqlQuery = session.createQuery("from Dept dept where dept.empMap.empName = 'XYZ'");

我收到以下异常:

org.hibernate.QueryException: illegal attempt to dereference collection [dept0_.DEPT_ID.empMap] with element property reference [empName] [from com.jdbc.Dept dept where dept.empMap.empName = 'XYZ']

请告诉我如何在这里使用隐式联接。阅读文档,我无法弄清楚我错过了什么。

1 个答案:

答案 0 :(得分:1)

您正在尝试访问类似属性的集合。你可以这样做:

from Dept dept inner join dept.empMap emp where emp.empName = 'XYZ'