Java Hql按问题联接和分组

Java Hql按问题联接和分组,java,hibernate,hql,Java,Hibernate,Hql,我试图在hql中进行查询。我有这些豆子: Bean1 @Entity @Table(name = "bean1") public class Bean1 { ... private List<Bean2> bean2; ... @ManyToMany( cascade={CascadeType.ALL}, fetch=FetchType.LAZY) @JoinTable(

我试图在hql中进行查询。我有这些豆子:

Bean1

@Entity
@Table(name = "bean1")
public class Bean1 {

        ...
        private List<Bean2> bean2;
...
@ManyToMany(
            cascade={CascadeType.ALL},  
            fetch=FetchType.LAZY)
@JoinTable( 
            name="bean1_bean2", 
            joinColumns=@JoinColumn(name="bean1_id"),   
            inverseJoinColumns=@JoinColumn(name="bean2_id") 
    )   
    public List<Bean2> getBean2() {
        return bean2;
    }

    public void setTags(List<Bean2> bean2) {
        this.bean2 = bean2;
    }


    ...
    }
但我有一个例外:


org.springframework.orm.hibernate3.HibernateQueryException: 非法尝试取消引用 收藏

我尝试了以下查询:

Query query = session.createQuery("SELECT bean1 FROM " +
                             ((Class) Bean1.class.getName() + " bean1 " +                           
                            " WHERE " + "bean1.bean1_id=? " + 
                            " JOIN bean1.bean2.bean2_id=?" + 
                            " GROUP BY bean1.bean2"
                            );
Query query = session.createQuery("SELECT beab1.bean2 FROM " + ((Class) Bean1.class.getName() + " bean1 " + " JOIN bean1.bean2 " + "bean2" + " WHERE " + "bean1.bean1_id=? " + " AND bean2.bean2_id=? " + " group by bean1.bean2.bean2_id=?");
另一个例外:


org.springframework.orm.hibernate3.HibernateQueryException: 非法尝试取消引用 集合[bean10\u.bean1\u id.bean2] 具有元素属性引用 [bean2_id]

我真正想得到的是,在给定一个bean1\u id的情况下,同一个bean1中重复了多少bean2\u id。
我这样做对吗??Hibernate3.6.0
提前感谢

如果我正确理解了你的问题,你应该这样做:

select b1 from Bean1 as b1 join b1.bean2 as b2 where b1.id = ?1 and b2.id= ?2 group by b2.id
select b1, b2.id from Bean1 as b1 join b1.bean2 as b2 where b1.id = ?1 and b2.id= ?2 group by b2.id
然而,这可能不起作用,因为您必须将select中的某些内容放入组中

但以下措施应该奏效:

select b2.id from Bean1 as b1 join b1.bean2 as b2 where b1.id = ?1 and b2.id= ?2 group by b2.id
如果要获取b1,但要按b2.id分组,可以尝试以下操作:

select b1 from Bean1 as b1 join b1.bean2 as b2 where b1.id = ?1 and b2.id= ?2 group by b2.id
select b1, b2.id from Bean1 as b1 join b1.bean2 as b2 where b1.id = ?1 and b2.id= ?2 group by b2.id

请注意,您将在结果中得到索引为0的Bean1数组。

org.springframework.orm.hibernate3.HibernateQueryException:无法解析属性:bean2 of how??我所做的是:Query Query=session.createQuery(“从“+((Class)Bean1.Class.getName()+“Bean1”+“JOIN Bean1.bean2”+“bean2”+”中选择beab2.bean2\u id=?“+”和bean2.bean2\u id=?“+”按Bean1.bean2.bean2\u id=?”分组);你是如何绘制bean2系列的地图的?有多少?有一个吗?你也应该有一组bean2。bean2_id@ManyToMany我尝试了不同的组合,同样的例外