WHERE参数等于ANY列(实体属性)值

时间:2012-04-05 14:33:43

标签: jpa jpa-2.0 jpql

我需要编写一个通用的NamedQuery;例如,找到任何属性与给定参数匹配的所有对象。

从MyObject mo中选择mo,其中mo.ANYAttribute = someParameter

我无法弄清楚“where mo.ANYAttribute”的表达式。一种通配符,例如“+或*或ANY或。”......有些东西可以帮助我编写查询,我必须手动编写以检查每个属性,例如:

其中mo.attribute1 =:someParameteror或mo.attribute2 =:someParameter

我正在使用JPA 2.0。

这种方式有可能还是我必须改变方法?

非常感谢, NAV

2 个答案:

答案 0 :(得分:0)

您需要列出实体的所有属性,JPA中没有ANYAttribute这样的东西:

  where mo.attr1=:someParamter or mo.attr2=:someParameter etc.

答案 1 :(得分:0)

以下是@NamedQuery使用参数的示例:

使用以下内容注释您的实体:

@NamedQuery(name = "findEntityById",
query = "SELECT entity FROM Entity entity WHERE entity.id = :inputId")

实体经理用法:

Query namedQuery = entityManager.createNamedQuery("findEntityById");
namedQuery.setParameter("inputId", 1);

A very good tutorial on NamedQueries.