我需要编写一个通用的NamedQuery;例如,找到任何属性与给定参数匹配的所有对象。
从MyObject mo中选择mo,其中mo.ANYAttribute = someParameter
我无法弄清楚“where mo.ANYAttribute”的表达式。一种通配符,例如“+或*或ANY或。”......有些东西可以帮助我编写查询,我必须手动编写以检查每个属性,例如:
其中mo.attribute1 =:someParameteror或mo.attribute2 =:someParameter
我正在使用JPA 2.0。
这种方式有可能还是我必须改变方法?
非常感谢, NAV
答案 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);