0

我有一个非常独特的查询,这让我在 Hibernate 中感到有些悲伤。我有以下实体:

class Batch {

  private Set exports;
  private boolean locked;

  ...
}

class Export {

  private bool success;

  ...
}

我正在尝试查询已锁定且没有导出的批次,或者仅在他们所做的所有导出在成功方面都是错误的情况下。我能够创建标准以仅获取至少包含错误的导出的批次,但似乎无法找到文档来检查连接的所有实体是否为错误。此外,我还想要那些以前没有 Exports 并发现我可以使用setProjection( Projections.rowCount() )的,但这需要运行两次查询。我到目前为止是这样的:

Criteria query = session.createCriteria( Batch.class );
query.add( Restrictions.eq( "locked", true ) );
query.createCriteria( "exports" ).add( Restrictions.ne( "success", true ) );
List results = query.list()

我对 Hibernate 还很陌生,并不完全了解可以做什么和不可以做什么。我希望这使用标准对象来完成,但不反对使用 HQL。如果这不能用那些可以休眠处理任何 SQL 语句来完成,或者是否也有限制?

4

1 回答 1

0

I would prefer using HQL in your scenario, but I guess following Criteria query would help. May not work exactly but will give you idea.

Criteria query = session.createCriteria(Batch.class)
        .createAlias("exports", "exports")
        .add( Restrictions.and(
                Restrictions.eq("locked", true),
                Restrictions.or(
                        Restrictions.isNotEmpty("exports"),
                        Restrictions.ne("success", true)
                        )
                )
于 2013-08-09T18:12:30.350 回答