Java HQL:隐式关联加入不起作用
我正在为我的应用程序使用Hibernate 3.2.5 我有一个Java HQL:隐式关联加入不起作用,java,hibernate,orm,hql,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 private int empId; private String empName; private int deptId; private int age; priva
Dept
表和一个Employees
表
Dept.java
private int deptId;
private String deptName;
private Map empMap = new HashMap();
//Getters and Setters
private int empId;
private String empName;
private int deptId;
private int age;
private String sex;
private Dept dept;
//Getters and Setters
Employees.java
private int deptId;
private String deptName;
private Map empMap = new HashMap();
//Getters and Setters
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>
我得到以下例外情况:
org.hibernate.QueryException:非法尝试使用元素属性引用[empName][from com.jdbc.DEPT where DEPT.empMap.empName='XYZ',取消对集合[dept0\uu.DEPT\u ID.empMap]的引用。
请让我知道如何使用这里的隐式连接。阅读文档时,我无法找出我缺少的内容。您正在尝试访问类似于属性的集合。您可以这样做:
from Dept dept inner join dept.empMap emp where emp.empName = 'XYZ'
谢谢你的回复,效果很好。在结束线程之前需要澄清一件事:我在Hibernate文档的HQL部分看到了这个查询:
在这个查询中选择cust.name.firstName作为cust
,如果name
是客户
类的字符串
类型属性,那么firstName
是什么?请澄清。谢谢名称
不能是字符串
,我认为这是一种组件类型,即另一个类。