【问题标题】:Same Query Gives Different Output In MSSQL And Hibernate 3相同的查询在 MSSQL 和 Hibernate 3 中给出不同的输出
【发布时间】:2017-03-16 10:25:15
【问题描述】:

用户

  • 用户名
  • 用户名
  • 密码
  • 状态

问题

  • 问题编号
  • 问题描述
  • 状态
  • 创建日期

问题分配

  • 问题编号
  • issueAssignedTo
  • issueAssignedBy
  • cmets

在我的 primefaces 数据表中,我使用以下查询获取这些值

SELECT I.issue_number, I.issue_describtion, U.first_name,US.first_name 
FROM ISSUES I
LEFT JOIN  ISSUE_ASSIGNED IA
ON  I.issue_number = IA.Issue_number
LEFT JOIN USERS U
ON U.id = IA.assigned_to_user_id
LEFT JOIN USERS US
ON   US.id = IA.assigned_by_user_id

同时也是用户的管理员将问题分配给另一个用户

在 MSSQL 中,上面的查询可以正常工作,因为它们是不同的用户,因此我可以正确记录 U.firstName 和 US.FirstName。

MSSQL 中的查询返回

PER-1675        Perform - Evaluation Form Export does not pull any data in Legacy Export Tool (Due 8/14)    Ameh    Sandip
PER-2048        Calculation of scores fails when the lower/upper bound value of a calculation text result is a  Ameh    Sandip

但在 Hibernate 中,对于相同的查询,firstName 和 US.firstName 给出相同的结果

代码

@Override
    public List<Object> getIssueListForAssigingIssue (){
        List<Object> allIssueList = getHibernateTemplate()
                .getSessionFactory()
                .getCurrentSession().createSQLQuery("SELECT I.issue_number, I.issue_describtion, IT.issue_type,U.first_name ,US.first_name "
                        + "FROM ISSUES I "
                        + "LEFT JOIN  ISSUE_ASSIGNED IA "
                        + "ON  I.issue_number = IA.Issue_number "
                        + "LEFT JOIN USERS U "
                        + "ON U.id = IA.assigned_to_user_id "
                        + "LEFT JOIN USERS US "
                        + "ON  US.id = IA.assigned_by_user_id ").list();
            return allIssueList;
    }

hibernate 中的查询返回

PER-1675        Perform - Evaluation Form Export does not pull any data in Legacy Export Tool (Due 8/14)    Ameh    Ameh
PER-2048        Calculation of scores fails when the lower/upper bound value of a calculation text result is a  Ameh    Ameh

【问题讨论】:

  • 是返回的仅有的两行吗?结果集可能相同,但顺序不同。
  • 这只是一个例子,实际上只有一个管理员分配问题。
  • Hibernate 查询使用 JOIN。直接 SQL 使用 LEFT JOIN。
  • @gbn 这两种方法我都试过了,都不行!!!

标签: java sql-server hibernate


【解决方案1】:

我能够通过为这两个列提供别名来解决它,因为 hibernate 在两列之间混淆了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2021-09-04
    相关资源
    最近更新 更多