我有像这样的数据库设置
tickets table
-------------
ticket_id
title
description
department_id
status_id
priority_id
assignee_id
creator_id
departments table
------------------
dep_id
dep_name
status table
------------
status_id
status_name
priority table
---------------
pr_id
pr_name
users table
-----------
u_id
username
password
salt
email
firstName
lastName
department_id
userlevel_id
userlevels table
-----------------
ul_id
ul_name
我正在尝试使用以下查询从故障单表中加载所有故障单:
SQLQuery q = session.createSQLQuery("SELECT t.*,d.*,s.*,p.*,u1.*, u2.*,a.* "
+ "FROM tickets t "
+ "INNER JOIN departments d ON t.department_id = d.dep_id "
+ "INNER JOIN status s ON t.status_id = s.stat_id "
+ "INNER JOIN priority p ON t.priority_id = p.pr_id "
+ "INNER JOIN users u1 ON t.creator_id = u1.u_id "
+ "INNER JOIN users u2 ON t.assignee_id = u2.u_id "
+ "INNER JOIN attachments a ON t.tick_id = a.ticket_id "
+ "WHERE assignee_id = ?");
q.setInteger(0, assignee_id);
q.addEntity("t", Ticket.class);
q.addJoin("d", "t.department");
q.addJoin("s", "t.status");
q.addJoin("p", "t.priority");
q.addJoin("u1", "t.creatorUser");
q.addJoin("u2", "t.assignedUser");
List<Object> tickets = q.list();
除分配的用户外,故障单的所有属性都正常加载。我认为发生的是查询只返回第一个用户(creatorUser)。 creatorUser和assignedUser都属于users表,因此hibernate看到重复的列名,只加载第一个。我不确定如何解决这个问题...感谢任何帮助,谢谢!!