2

我有下一个类/表:

用户

  • ID
  • 姓名
  • 作品 // 作品列表

工作

  • ID
  • 姓名
  • 用户身份

以及以下代码:

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

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

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

4

1 回答 1

2

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

我宁愿将您感兴趣的作品与其关联的用户一起加载:

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"));
于 2011-10-11T21:40:55.650 回答