2017-04-13 105 views
0

結果取我有兩個實體許多許多關係如下圖所示..從多對多關係

@Entity 
@Table(name = "MEMBER") 
public class Member implements Serializable { 
    @Id 
    private Long id; 

    private String name; 

    @OneToMany(fetch = FetchType.LAZY) 
    @Fetch(value = FetchMode.SELECT) 
    @JoinTable(name = "MEMBER_BADGE", 
      joinColumns = {@JoinColumn(name = "member_id", referencedColumnName = "id")}, 
      inverseJoinColumns = {@JoinColumn(name = "badge_id", referencedColumnName = "id")}) 
    private List<Badge> badgeList = new ArrayList<>(0); 

    // Getter & Setters 

} 

而且

@Entity 
@Table(name = "BADGE") 
public class Badge implements Serializable{ 
    @Id 
    private Long id; 

    private String name; 

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "badgeList") 
    @Fetch(FetchMode.SELECT) 
    private List<Member> memberList = new ArrayList<>(0); 

    // Getter & Setters 
} 

Badge名的例子......「教師「,」醫生「,」工程師 「等

如何讓所有的」 List<Member> 「誰擁有」 教師「由Hibernate Criteria/Query徽章。

session.createCriteria(Member.class).add(Restrictions.eq(---What ?---)).list();

session.createQuery("select mem from Member where ???? ").list();

回答

0

已使用別名像解決......

session.createCriteria(Member.class) 
     .createAlias("badgeList", "badge") 
     .add(Restrictions.eq("badge.name", "Teacher")) 
     .list();