Hibernate没有返回预期的映射值

时间:2014-06-13 16:15:37

标签: java mysql sql hibernate

我有像这样的数据库设置

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看到重复的列名,只加载第一个。我不确定如何解决这个问题...感谢任何帮助,谢谢!!

0 个答案:

没有答案