我正在为我的应用程序使用Hibernate 3.2.5。
我有一个Dept
表和一个Employees
表。
部门java
private int deptId;
private String deptName;
private Map empMap = new HashMap();
//Getters and Setters
员工.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']
请让我知道如何在这里使用隐式连接。阅读文档后,我无法弄清丢失的内容。
最佳答案
您正在尝试访问类似属性的集合。您可以改为:
from Dept dept inner join dept.empMap emp where emp.empName = 'XYZ'
关于java - HQL:隐喻协会加入无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17248000/