在JPA中实现按示例查询功能

时间:2010-11-20 03:42:53

标签: java hibernate jpa

您是否知道在JPA中实现类似Hibernate QBE(按示例查询)的方法?

对于我的问题域,使用它的替代方法是使用某种字符串操作动态地构建SQL查询,这是我想要避免的。

我知道API中默认不支持此功能,但我认为它是构建动态查询的一种很棒的技术。

有什么建议吗?

4 个答案:

答案 0 :(得分:9)

QBE在JPA 1.0或2.0中不可用。有关详细信息,请查看here

答案 1 :(得分:8)

在JPA 2.0中,最接近的等价物称为 Criteria API 。它在JPA 1.0中不存在。

以下是一个示例:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery c = cb.createQuery(Person.class);
Root person = c.from(Person.class);
c.select(person)
    .where(cb.equal(person.get("name"), "Officer Friendly"));

答案 2 :(得分:1)

前一段时间我正面对同样的问题。

我发现使用JPA Criteria API有点麻烦,所以我决定在它之上进行抽象。

这是一个小而灵活的简单库:https://github.com/kenglxn/QueryByExample

希望这对同样问题的其他人有用。

测试用例有几个实际示例:https://github.com/kenglxn/QueryByExample/blob/master/src/test/java/net/glxn/qbe/QBETest.java

答案 3 :(得分:0)

很久以前我不得不划伤那个ich,我决定自己做。

你可以在sourceforge获得它: svn://svn.code.sf.net/p/jpaco/code/ jpaco-code