2017-12-01 10 views
0

に基づいてprentエンティティを取得する私は、エンティティの構造を次ていますJPA述語は、子エンティティ数

@Entity 
class ParentClass { 
    @Id 
    int id; 
    @ManyToMany 
    List<ChildClass> childAttribute; 
} 

@Entity 
public class ChildClass {  
    @Id 
    int id;  
} 

は私がchildAttributeという名前の属性の大きさが「ゼロ」である親エンティティをフェッチする述語を、書きたいです。おかげさまで 以下のように行うことができます

+0

2次元マッピングを使用する。 –

+0

https://stackoverflow.com/questions/29316485/hibernate-one-to-many-mapping-configuration –

+0

これまでに試したことを教えてください。 – crizzis

答えて

0

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery<ParentClass> cq = cb.createQuery(ParentClass.class); 
Root<ParentClass> root = cq.from(ParentClass.class); 
cq.select(root) 
    .where(cb.isEmpty(root.get("childAttribute"))); 

TypedQuery<ParentClass> query = em.createQuery(cq); 
List<ParentClass> result = query.getResultList(); 

等価JPQLクエリは次のとおりです。JPQL syntaxを参照してください詳細については

SELECT p FROM ParentClass p where p.childAttribute IS EMPTY 

関連する問題