gpt4 book ai didi

java - Hibernate 多对多带条件检索列表

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:58 25 4
gpt4 key购买 nike

我正在与 hibernate 合作和java 。我有一个Group类和a User类(class)。他们共享一个many-to-many关系如下ERD所示ERD .

我想要实现的是我想要检索组列表,条件是它们包含 User具有一定的User_id .

GroupDao我定义了一个函数retrieveForUser我尝试使用 hibernate query language 检索列表:

public List<Group> retrieveForUser(int userid){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
String hql = "select distinct g from Group g " +
"join g.allGroupMembers u " +
"where u.id = :id";
Query query = session.createQuery(hql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.setParameter("id", userid);
List<Group> list = query.list();
session.getTransaction().commit();
return list;
}

当我尝试使用以下方法循环遍历结果列表时:

for(Group g : groupDao.retrieveForUser(user1.getId())){
System.out.println(g.getName());
}

我收到以下错误消息:

java.lang.ClassCastException: java.util.HashMap cannot be cast to nl.hu.jelo.domain.group.Group

问题我怎样才能实现它,以便我最终得到 List<Group>仅包含包含 User 的组具有一定的User_id

最佳答案

您不需要设置结果转换器。 ALIAS_TO_ENTITY_MAP 用于其他目的。

简单地做

String hql = "select distinct g from Group g " +
"join g.allGroupMembers u " +
"where u.id = :id";
Query query = session.createQuery(hql);
query.setParameter("id", userid);

已经足够好了。

偏离主题,您确定要像这样手动处理事务吗?

关于java - Hibernate 多对多带条件检索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31044643/

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