Tag: criteria

Hibernate:按示例查询涉及一对多关系

我最近开始使用Criteria API的示例组件进行查询,并遇到了一个奇怪的问题 – 尝试执行搜索时会抛出org.hibernate.QueryException。 我的方案如下: 我有一个类A,它的一个属性有一组B类实例(Set listOfBs)。 这被映射为A中的一对多关系。 我希望在B的示例实例上设置标准查询,例如,使用属性值“somevalue”指定所有B,然后应用该条件以查找在其集合中具有此类B的所有A。 这是我正在使用(或希望)的代码: Criteria aCrit = session.createCriteria(A.class); A aExampleInstance = new A(); Example aExampleCriteria = Example.create(aExampleInstance ); Criteria bCrit = atCrit.createCriteria(“listOfBs”); B bExampleInstance = new B(); bExampleInstance .setProperty(“somevalue”); bCrit.add(Example.create(bExampleInstance )); List results = aCrit.add(aExampleCriteria).list(); 我正在使用XML映射,A正在将它与B的关系映射如下(A.hbm.xml): 我意识到这可能不是正确的方法 – 欢迎任何更好的建议。 在任何情况下,麻烦的是我得到一个例外: org.hibernate.QueryException:无法解析属性:_com of:B 我已经搜索并意识到exception告诉我的是什么。 但是在我的任何类中都没有声明这样的属性名称 – 在我看来,这可能是Hibernate在引擎盖下使用的任何仪器的一部分,以使持久性看起来透明。 我很好奇这是否是一个已知问题,是否有人使用过的解决方法,或者是否有较新版本的解决方案? 我正在使用Hibernate 3.6.6。 […]

如何为超类编写Hibernate Criteria查询,并检查某个子类?

如何为超类编写Hibernate Criteria查询,并检查某个子类? 让我们假设我们有以下所有使用Hibernate-JPA映射的类: @Entity @Inheritance(strategy = InheritanceType.JOINED) public class Bar { @Id @Column(name = “id”) private Long id; } @Entity @PrimaryKeyJoinColumn(name=”bar_id”) public class Foo extends Bar { } @Entity @PrimaryKeyJoinColumn(name=”bar_id”) public class Goo extends Bar { } 在编写像这样的Criteria查询时,为了提高性能,我希望对子类使用左连接: getSession() .createCriteria(Bar.class) .createAlias(“Foo”, “foo”, CriteriaSpecification.LEFT_JOIN) .add(Restrictions.isNotNull(“foo.bar_id”)) .list(); 这失败了,因为关联路径“Foo”显然不起作用,但它会说明我想要的。 或者是否有另一种方法来执行此类查询? 我需要在超类上执行查询。 如果我在SQL中完成它,它将如下所示: select b.* from bar b left […]

Criteria API返回的结果集太小

这怎么可能,我必须遵循标准 Criteria criteria = getSession().createCriteria(c); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); criteria.add(Restrictions.eq(“active”,true)); List list = criteria.list(); 列表的大小现在是20.如果我在条件中添加最大结果, Criteria criteria = getSession().createCriteria(c); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); criteria.setMaxResults(90); criteria.add(Restrictions.eq(“active”,true)); List list = criteria.list(); ..现在列表的大小是18! 在定义最大结果后,我不明白结果集大小如何变小,因为行数小于定义的最大值。 这肯定看起来像一个bug,或者还有一些我不知道的hibernate奇怪的方面? 如果您正在寻找此问题的答案,请务必阅读已接受的答案及其评论。

Hibernate Criteria API – 添加标准:字符串应该在集合中

我必须遵循实体对象 @Entity public class Foobar { … private List uuids; … } 现在我想制作一个标准查询来获取所有Foobar pojos,其uuids列表包含字符串“abc123”,我只是不确定如何制定适当的标准。

JPA – FindByExample

有没有人有一个很好的例子来说明如何在JPA中执行findByExample,它将通过任何实体类型的reflection在genericsDAO中工作? 我知道我可以通过我的提供商(Hibernate)来做,但我不想打破中立…… 看起来像标准API可能是要走的路……但我不知道如何处理它的reflection部分。