0

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

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

我无法弄清楚“where mo.ANYAttribute”的表达方式。诸如“ + 或 * 或 ANY 或 .) 之类的通配符......这将使我免于编写查询,我必须手动编写以检查每个属性,例如:

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

我正在使用 JPA 2.0。

有可能这样还是我必须改变我的方法?

非常感谢, 导航

4

2 回答 2

0

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

  where mo.attr1=:someParamter or mo.attr2=:someParameter etc.
于 2012-04-05T14:36:58.033 回答
0

以下是带有参数的@NamedQuery用法示例:

使用以下命令注释您的实体:

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

实体管理器用法:

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

一个非常好的关于 NamedQueries 的教程。

于 2012-04-05T14:43:27.673 回答