Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 休眠具有条件的多对多检索列表_Java_Hibernate - Fatal编程技术网

Java 休眠具有条件的多对多检索列表

Java 休眠具有条件的多对多检索列表,java,hibernate,Java,Hibernate,我正在使用hibernate和java。我有一个组类和一个用户类。它们共享多对多关系,如本ERD所示 我试图实现的是,我想要检索一个组列表,条件是它们包含一个具有特定用户id的用户 在GroupDao中,我定义了一个函数retrieveForUser,在该函数中,我尝试使用hibernate查询语言检索列表: public List<Group> retrieveForUser(int userid){ Session session = HibernateUtil.getS

我正在使用
hibernate
java
。我有一个
类和一个
用户
类。它们共享
多对多
关系,如本
ERD
所示

我试图实现的是,我想要检索一个组列表,条件是它们包含一个具有特定
用户id的
用户

GroupDao
中,我定义了一个函数
retrieveForUser
,在该函数中,我尝试使用
hibernate查询语言检索列表

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;
}
我收到以下错误消息:

java.lang.ClassCastException: java.util.HashMap cannot be cast to nl.hu.jelo.domain.group.Group
问题
如何实现它,使我最终得到一个
列表
,其中只包含一个
用户
、具有特定
用户id的组

,您无需设置结果转换器<代码>别名到实体映射
用于其他目的

干脆

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);
这已经足够好了


有些离题,您确定要这样手动处理事务吗?

您不需要设置结果转换器<代码>别名到实体映射
用于其他目的

干脆

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);
这已经足够好了

有些离题,您确定要这样手动处理事务吗?

setResultTransformer(Transformers.ALIAS\u to\u ENTITY\u MAP)不是必需的。为什么要这样写?
setResultTransformer(Transformers.ALIAS\u TO\u ENTITY\u MAP)不是必需的。你为什么这么说?