【问题标题】:Filter in Hibernate Join在 Hibernate Join 中过滤
【发布时间】:2012-05-02 22:39:30
【问题描述】:

如何将过滤器添加到 Hibernate 的加入?我有一个有三个孩子的实体父级,我想按这些子实体的某些字段过滤数据。它通过

在我的 DAO 上创建的 JOIN
sessionFactory.getCurrentSession().createCriteria(Cartel.class).add( create(instance) ).list();

我想如果我设置了我想要过滤的字段,Hibernate 会自动构建由这些字段过滤的 JOIN,但它会返回所有结果(构建的 select 语句在 where 子句中只有 1=1)。

【问题讨论】:

  • 如果您愿意发布更多关于您的 Cartel 类和您想要使用的其他类的信息,并提供您想要获取的选择(带过滤器)示例,我们可以提供更多对您有用的信息。

标签: hibernate


【解决方案1】:

不幸的是,HQL 不允许将 ON 子句的概念用于连接,这就是您所暗示的。

但是,您可以编写原始 SQL 并使用 createSQLQuery() 执行任意 SQL,这当然可以指定 ON 子句(假设您的数据库支持它)

【讨论】:

  • 但是该语句的格式正确,每个子实体都有 JOIN。问题是我无法将过滤器添加到这些子实体的数据集的 where 子句中。
  • 使用HQl然后:where parent.child.name = 'fred'
  • 我没有任何 HQL,它是使用 hbm 和条件自动构建的 JOIN。
【解决方案2】:

我解决了:

criteria.add(Restrictions.eq("xxx",Object);

谢谢。 问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多