2011-07-18 8 views
1

私は同様の質問を試みますが、成功しません。してください、誰かが私の質問に私を助けることができます。私は、次のPOJOがありますorg.hibernate.QueryException:コレクションを逆参照しようとする不正な試み - サブクエリー・エラー

@Entity 
public class EntityA implements Serializable { 

private static final long serialVersionUID = 1L; 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id; 

@Column(length=9) 
private String someField; 

@Column(length=50) 
private String anotherField; 

Getters and Setters ...... 




    @Entity 
    public class EntityB { 


private static final long serialVersionUID = 1L; 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id; 


@OneToMany(cascade={CascadeType.ALL}) 
private List<EntityA> listOfEntityA; 


Getters and Setters ...... 

をそして私は

return (List<EntityA>) genericDAO.retrieveList("from EntityA e1 where e1.id not in (select e2.listOfEntityA.id from EntityB e2 where e2.id =?1)" , myParamId); 

EntityB

に含まれているフィールドリストに存在しないエンティティAのオブジェクトの一覧を取得しようと、例外をキャッチ

org.hibernate.QueryException: illegal attempt to dereference collection 

すでにサブクエリを使用せずに、entityBのフィールドに含まれるオブジェクトのリストをパラメータとして渡しましたが、成功しません。私は間違っているところ

誰もが事前

答えて

1

おかげで、この文字列で検索してください教えてもらえます:

String query = 
    "SELECT entityA " + 
    "FROM EntityA entityA " + 
    "WHERE entityA.id NOT IN (" + 
    " SELECT entityAOfB.id " + 
    " FROM EntityB entityB " + 
    " JOIN entityB.listOfEntityA entityAOfB " + 
    " WHERE entityB.id = ?1"; 
    ")"; 
+0

はあなたにニコラエAlbuありがとうございます。それはちょうどうまくいった。私はこのJOIN節にあまり知識がありません。私はより多くの情報を探します。再度、ありがとうございます。 – fabiogm

関連する問題