2015-11-25 28 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設置多個參數。