Java 休眠条件筛选器内部集合

Java 休眠条件筛选器内部集合,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我有下面的课程/表格: 使用者 身份证 名字 工作//工作清单 工作 身份证 名字 用户id 以及以下代码: Criteria criteria = session.createCriteria("User"); criteria.list(); 返回用户的列表,其中包含与其关联的工作对象的列表(按id=用户id) 如何修改此查询以获得相同的用户列表,但有以下限制: Work列表不应包括Works where name='fck'?这是可能的,但不是明智的,因为加载的用户不会反映数据

我有下面的课程/表格:

使用者
  • 身份证
  • 名字
  • 工作//工作清单
工作
  • 身份证
  • 名字
  • 用户id
以及以下代码:

Criteria criteria = session.createCriteria("User"); 
criteria.list();
返回
用户
的列表,其中包含与其关联的
工作
对象的列表(按id=用户id)

如何修改此查询以获得相同的
用户列表
,但有以下限制:
Work
列表不应包括
Work
s where name='fck'?

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

我更愿意加载您感兴趣的作品及其相关用户:

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"));

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

我更愿意加载您感兴趣的作品及其相关用户:

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"));

他想知道如何为特定用户获得所有作品(就我的俄语技能而言)。您可以通过在用户实例上调用getWorks()来访问它们,或者对两个实体user和Work进行连接(如果它们是惰性加载的,则可能进行连接获取)。他想知道如何获取特定用户的所有作品(就我的俄语技能而言)。您可以通过在用户实例上调用getWorks()来访问它们,也可以对两个实体user和Work进行连接(如果它们是惰性加载的,则可能进行连接获取)。