Hibernate标准过滤内部集合

时间:2011-10-11 19:55:08

标签: java hibernate hibernate-criteria

我有下一个课程/表格:

用户

  • ID
  • 名称
  • 工作//工作清单

工作

  • ID
  • 名称
  • USER_ID

以下代码:

Criteria criteria = session.createCriteria("User"); 
criteria.list();

返回User的列表,其中包含与它们相关的Work对象列表(通过id = user_id)。

如何修改此查询以获取User的相同列表,但具有以下限制: Work的列表不应包含Work,其中name ='fck'?

1 个答案:

答案 0 :(得分:1)

这是可能的,但不明智,因为加载的用户不会反映数据库的实际状态:他们的作品列表应该包含他们的所有作品,而不仅仅是其中的一部分。修改它们可能会导致数据库中不需要的删除。

我宁愿用他们的相关用户加载你感兴趣的作品:

Criteria c = session.createCriteria(Work.class, "work");
c.createAlias("work.user", "user");
c.setFetchMode("work.user", FetchMode.JOIN);
c.add(Restrictions.ne("work.name", "fck"));