81,122
社区成员




create table MemberFavoriteProduct(
favorite_members int references Member(id) not null,
favorite_products int references Products(id) not null,
primary key(favorite_members, favorite_products)
)
private Set<Product> favoriteProducts = new HashSet<Product>();
.........
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "MemberFavoriteProduct", joinColumns = @JoinColumn(name = "favorite_members"), inverseJoinColumns = @JoinColumn(name = "favorite_products"))
public Set<Product> getFavoriteProducts() {
return this.favoriteProducts;
}
public void setFavoriteProducts(Set<Product> favoriteProducts) {
this.favoriteProducts = favoriteProducts;
}
private Set<Member> favoriteMembers = new HashSet<Member>();
..........
@ManyToMany(mappedBy = "favoriteProducts", fetch = FetchType.LAZY)
public Set<Member> getFavoriteMembers() {
return this.favoriteMembers;
}
public void setFavoriteMembers(Set<Member> favoriteMembers) {
this.favoriteMembers = favoriteMembers;
}
Criteria criteria = this.getSession().createCriteria(Product.class);
criteria.createAlias("favoriteMembers","x", JoinType.INNER_JOIN);
criteria.add(Restrictions.eq("x.favoriteMembers", member));//member为参数对象
.........
select count(*) as y0_ from Product this_ inner join MemberFavoriteProduct favoriteme3_ on this_.id=favoriteme3_.favorite_products inner join Member x1_ on favoriteme3_.favorite_members=x1_.id where favoriteme3_.favorite_members.id = ?