Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate未返回预期的映射值_Java_Mysql_Sql_Hibernate - Fatal编程技术网

Java Hibernate未返回预期的映射值

Java Hibernate未返回预期的映射值,java,mysql,sql,hibernate,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 ---

我有一个这样的数据库设置

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();
SQLQuery q=session.createSQLQuery(“选择t.*,d.*,s.*,p.*,u1.*,u2.*,a.*”
+“来自t”
+“在t.department\u id=d.dep\u id上内部连接部门d”
+“t.status\u id=s.stat\u id上的内部联接状态s”
+“t.priority\u id=p.pr\u id上的内部连接优先级p”
+“t.creator\u id=u1.u\u id上的内部加入用户u1”
+“t.u\u id=u2.u\u id上的内部加入用户u2”
+“t.tick\u id=a.ticket\u id上的内部联接附件a”
+“其中,受让人_id=?”;
q、 setInteger(0,受让人id);
q、 附录(“t”,票证类别);
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 tickets=q.List();

除指定的用户外,票证的所有属性都处于加载状态。我认为正在发生的是,查询只返回第一个用户(creatorUser)。creatorUser和assignedUser都属于users表,因此hibernate会看到重复的列名,并且只加载第一个列名。我不知道如何解决这个问题。。。非常感谢您的帮助,谢谢

Hibernate为您提供了查询返回的所有项目的列表!(不仅仅是第一个)。你在命令行上搜索过了吗?我明白了。。。然后它只加载第一个用户。。不,我没有,但我肯定我会得到相同的输出…你加入的所有表都满了吗?为什么要在setInteger之后添加行?是的,所有表都已填充。这些行是hibernate方法,允许它将结果正确映射到对象