2010-12-29 13 views
0

hqlでクエリを作成しようとしています。私はこれらのBeanがあります。Hqlがグループ化してグループ化します。

Bean1

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

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

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


    ... 
    } 

をBean2

@Entity 
@Table(name = "bean2") 
public class Bean2 { 

    private String bean2_id;  
    private List<Bean1> bean1; 

    @Id 
    @Column(name = "bean2_id", length = 100, unique = true, nullable = false) 
    public String getBean2_id() { 
     return bean2_id; 
    } 
    public void setBean2_id(String bean2_id) { 
     this.bean2_id = bean2_id; 
    } 

    @ManyToMany(
      cascade = {CascadeType.PERSIST, CascadeType.MERGE}, 
      fetch=FetchType.LAZY, 
      mappedBy = "bean2"    
    ) 
    public List<Bean1> getBean1() { 
     return bean1; 
    } 
    public void setBean1(List<Bean1> bean1) { 
     this.bean1 = bean1; 
    } 

} 

と問合せ:

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" 
          ); 

しかし、私はこの例外を取得しています:

org.springframework.orm.hibernate3.HibernateQueryException:

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間接参照 コレクション

へ 違法な試みは私がanotheクエリを試してみました.hibernate3.HibernateQueryException: 逆参照しようとする不正な試み コレクション[bean10_.bean1_id.bean2]私は本当に取得したいどのような要素プロパティを参照して [bean2_id]

は、与えられたbean1_idと同じbean1に繰り返され、どのように多くのbean2_idです。
私は正しい方法でいますか?あなたがして、グループに入れなければならないので、しかし、これはおそらく、動作しませんでしょう

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

:私が正しくあなたの質問を理解していれば、あなたはこのような何かを行う必要があり、事前

答えて

2

に3.6.0 感謝を休止選択からの何か。

しかし、以下の作業をする必要があります:あなたは、B1を取得したい場合は

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

が、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 

あなたご注意をBean1でインデックス0に配列を取得します。

+0

org.springframework.orm.hibernate3.Hibernate3.HibernateQueryException:プロパティーを解決できませんでした:bean2の –

+0

マップしましたか? – Tarlog

+0

どのように?クエリクエリ= session.createQuery( "SELECT beab2.bean2_id FROM" +((クラス)Bean1.class.getName()+ "bean1" + "JOIN bean1.bean2" + "bean2" + "WHERE" + "bean1.bean1_id =?" + "bean2bean2_id =?" + "group by bean1.bean2.bean2_id =?"); –

関連する問題