【问题标题】:Hibernate detached criteria for multiple Restrictions多个限制的休眠分离标准
【发布时间】:2015-11-29 14:41:00
【问题描述】:

我正在尝试获取状态仍显示为非活动的用户列表并对其进行处理。 此用户嵌入了 UserDetails、UserActivity 实体。所有实体表都有状态列,值为 Inactive。

现在我使用分离标准,

detachedcriteria.for class(User.class).add(Restrictions. 
   Eq("status","Inactive").setresulttransformer(criteria.distinct_element)

这将用户对象及其嵌入实体作为单个用户对象提供给我。

但是现在,我必须调整查询以确保嵌入式类的状态也处于非活动状态。所以我确实选择了命名查询,因为我不知道如何在单个分离条件中为不同实体添加多个限制。

在命名查询中,我将连接所有表以获取数据。而且我能够获取数据,但它返回的对象数组列表。此列表的第一个对象中包含以下实体数组的位置。

命名查询:

from User us, UserDetail ud, UserActivity uc where us.id=ud.id and us.id=uc 
  .id and us.status=ud.status and us.status=uc.status and us.status='Inactive'

List<User>=query.list ();

Object ob=lst.get(0);

Where ob contains [User(),UserDetail(),UserActivity ()].
  1. 我们能否在一个分离的标准中对不同实体的多个限制进行修正?

  2. 我们能否有一个命名查询,当我进入 detachedcriteria 时,它将返回一个用户对象以及其中的嵌入实体?(这样我就可以直接执行User.getUserDetail())。

【问题讨论】:

    标签: hibernate detachedcriteria


    【解决方案1】:

    您可以为此使用别名:

    假设你有类似的用户类

    class User {
        ...
        private UserDetail userDetail;
        private UserActivity userActivity;
        ...
    }
    

    您不能直接限制对象的二级属性。通过使用.createAlias() 方法,您可以将JOIN 语句添加到生成的SQL 中,并使用别名添加限制。

    DetachedCriteria dc = DetachedCriteria
        .forClass(User.class , "u")
        .add(Restrictions.Eq("u.status","Inactive")
        .createAlias("u.userDetail", "ud")
        .add(Restrictions.Eq("ud.status","Inactive")
        .createAlias("u.userActivity", "ua")
        .add(Restrictions.Eq("ua.status","Inactive")
        .setResultTransformer(Criteria.DISTINCT_ROOT_ELEMENT);
    

    【讨论】:

    • 您好 Ghokun,感谢您的回复。我会尝试你描述的方法。但是有一个问题,如果我的属性之一是列表并且它是一对多的关系怎么办。喜欢:class User { ... private UserDetail userDetail;私有列表 userActivity; ... }.. 这里一个用户有很多活动。
    • .createAlias("u.userActivity", "ua") 和 .createAlias("u.userActivities", "ua") 都有效。您还可以将 JoinType 定义为第三个参数。
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2013-02-16
    • 2011-05-07
    • 2011-10-23
    • 2016-04-01
    相关资源
    最近更新 更多