public class Game{
@Id
private int id;
@ManyToMany
@JoinTable(
name="game_community"
, joinColumns={
@JoinColumn(name="game_id", nullable=false)
}
, inverseJoinColumns={
@JoinColumn(name="community_id", nullable=false)
}
)
private Set<Community> communities;
@ManyToMany
@JoinTable(
name="user_game"
, joinColumns={
@JoinColumn(name="game_id", nullable=false)
}
, inverseJoinColumns={
@JoinColumn(name="user_id", nullable=false)
}
)
private Set<User> users;
帮我创建Hibernate标准来获取游戏,其中community.id = 1
和game.users为null或不包含id = 5的用户
答案 0 :(得分:0)
我认为用户和社区的id变量的名称是“id”,并且你有一个UserGame类,那么我认为你可以使用以下代码:
DetachedCriteria critSubQuery = DetachedCriteria.forClass(UserGame.class, "ug");
critSubQuery.add(Restrictions.eq("ug.user.id", 5));
critSubQuery.add(Restrictions.eqProperty("ug.game.id","g.id"));
critSubQuery.setProjection(Projections.property("ug.game.id"));
Criteria crit = sess.createCriteria(Game.class, "g");
crit.createAlias("communities", "com");
crit.add(Restrictions.eq("g.com.id", 1));
crit.add(Subqueries.notExists("g.id", critSubQuery));
您需要执行子查询以获取与user_user = 5的User-Game关系的所有记录,并在主查询中使用该子查询。
我希望这段代码能够很好地运作。
祝你好运。