gpt4 book ai didi

java - SQLQuery.list() 返回相同的条目

转载 作者:行者123 更新时间:2023-11-29 12:04:18 29 4
gpt4 key购买 nike

在我的 java 代码中,我是这样写的。此查询一次又一次地返回相同的记录。但是在数据库中我只有一条记录。

String queryString = "select e.business_event_id, e.event_name from events e left outer join subscriptions s on (e.business_event_id = s.business_event_id and s.firm_id = :firmId and s.employee_id = :employeeId) where e.object_id = :objectId and e.category_type =:categoryType and e.is_enabled =:isEnabled";

queryString += " order by e.event_name asc";
final SQLQuery query = session.createSQLQuery(queryString);
query.setParameter("firmId", firmId);
query.setParameter("employeeId", employeeId);
query.setParameter("objectId", objectId);
query.setParameter("categoryType", categoryType);
query.setParameter("isEnabled", "Y");
final List<Object[]> list = query.list();

这里它一次又一次地返回相同的条目。如果有人知道请帮我解决这个问题。提前致谢。

最佳答案

那是因为您正在加入具有多个子行的父记录。

由于您只需要从父实体端选择记录,您可以简单地使用 distinct:

"select distinct e.business_event_id, e.event_name from ..."

但您还应该使用 hibernate.query.passDistinctThrough避免将 DISTINCT 传递给 SQL 语句的 Hibernate 查询提示。

更新

正如 @a_horse_with_no_name 所说,您甚至不需要使用 subscriptions 进行左连接,因为您没有从该关系中选择任何内容,也没有过滤它任何一个。通过删除该连接,您将不会得到任何重复项,并且不再需要 distinct

关于java - SQLQuery.list() 返回相同的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547513/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com