【问题标题】:Hibernate criteria filter inner collectionHibernate 标准过滤器内部集合
【发布时间】:2011-12-05 14:42:39
【问题描述】:

我有下一个类/表:

用户

  • 身份证
  • 姓名
  • 作品 // 作品列表

工作

  • 身份证
  • 姓名
  • user_id

还有如下代码:

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

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

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

【问题讨论】:

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

标签: java hibernate hibernate-criteria


【解决方案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"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2013-08-05
    • 2016-02-18
    • 2011-01-20
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多