我在用户和广告之间有一个多对多的关系,它是这样映射的
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "faved_ads",
joinColumns = {@JoinColumn(name = "advert_id", nullable = false, updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "user_id", nullable = false, updatable = false)})
public List<User> getFavouriters() {
return favouriters;
}
@ManyToMany(mappedBy = "favouriters")
public List<Advert> getFavourites() {
return favourites;
}
如果我想找到某个用户喜欢的所有广告,如何从数据库中检索这些数据?可以通过创建标准限制或投影来实现吗?
这就是我如何从一对多检索数据,但无法为多对多获取类似的解决方案
public static <T> List<T> getList(Criteria criteria) {
List<T> results = null;
try {
transaction = session.beginTransaction();
results = criteria.list();
transaction.commit();
} catch (HibernateException ex) {
transaction.rollback();
ex.printStackTrace();
} finally {
session.close();
}
return results;
}
public static List<Advert> usersAdverts(User user) {
session = HibernateUtil.getSessionFactory().openSession();
Criteria cr = session.createCriteria(Advert.class);
cr.createAlias("user", "user");
cr.add(Restrictions.eq("user.id", user.getId()));
return getList(cr);
}
谢谢