2015-11-25 27 views
1

我正在创建一个REST服务,起初很简单,但现在我想要在列中获取具有特定值的表行。NamedQueries JPA REST中的WHERE EQUALS语句

这是我现在有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价值发现,而不是,可以说包含了所有行的“1”,在AmlClientCategory列,我怎么做?

我正在关注this指南来创建我的REST服务。

任何帮助非常感谢!

+0

您在JPA中使用实体工作,而不是在SQL表中工作。 e.amlClientCategory是一个实体还是一个字符串? –

+0

@Andreil这是一个实体,我认为,我有一个(一)实体高于他们所有 –

+1

我不这么认为。它应该总是一个字符串。 –

回答

2

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

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

这是在正面吗? –

+0

@ Somethingcool123正确的,你可以把它放在Facade类 –

1

使用下面的代码在你的DAO实现类。

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

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