JPA REST 中的 NamedQueries WHERE EQUALS 语句

NamedQueries WHERE EQUALS statement in JPA REST

我正在创建一个 REST 服务,起初很简单,但现在我想获得 table 列中具有特定值的行。

这是我现在拥有的 NamedQueries 的一个示例:

@NamedQuery(name = "ExampleTable.findAll", query = "SELECT e FROM ExampleTable e"),
@NamedQuery(name = "ExampleTable.findById", query = "SELECT e FROM ExampleTable e WHERE e.id = :id"),
@NamedQuery(name = "ExampleTable.findByAmlClientCategory", query = "SELECT e FROM ExampleTable e WHERE e.amlClientCategory = :amlClientCategory"),
@NamedQuery(name = "ExampleTable.findByClientId", query = "SELECT e FROM ExampleTable e WHERE e.clientId = :clientId")

现在,如果我想通过特定的 AmlClientCategory 值查找,假设在 AmlClientCategory 列中包含“1”的所有行,我该怎么做?

我正在按照 this 指南创建我的 REST 服务。

非常感谢任何帮助!

你可以这样执行(假设 AmlClientCategory 是一个字符串):

List<ExampleTable> results = em.createNamedQuery("ExampleTable.findByAmlClientCategory", ExampleTable.class)
    .setParameter("AmlClientCategory", "1")
    .getResultList();

在您的 DAO 实现中使用以下代码 class。

Query query= entityManager.createNamedQuery("ExampleTable.findByAmlClientCategory");
query.setParameter("AmlClientCategory", "1");
Collection result = query.getResultList();

在这里您可以为您的NamedQuery设置多个参数。