2017-05-25 64 views
1

我試圖創建一個Java命名查詢其執行以下操作Postgres的查詢:的Java命名查詢

select * from call_attempt where result is NULL and id like '0000000101%'; 

的0000000101設置爲ID在我的代碼,所以這就是我想做的事,但它的格式不正確的:(我不知道如何同時使用%設置id字段,它必須是內'「)

@NamedQuery(name = AttemptEntity.JQL.NOTENDED, 
         query = "SELECT ae FROM AttemptEntity ae WHERE ae.result IS NULL," 
          + " ae.correlationId LIKE '=:id%'") 
+0

有WHERE子句中的一個逗號,也缺少一個'和'。 –

回答

2

首先,你忘了and,並用逗號代替它。

其次,%必須作爲參數的一部分進行傳遞:

SELECT ae FROM AttemptEntity ae WHERE ae.result IS NULL 
and ae.correlationId LIKE :id 

然後,執行查詢時:

String id = "0000000101%"; 
query.setParameter("id", id); 
+0

這仍是說畸形結局\t @NamedQuery(名稱= AttemptEntity.JQL.NOTENDED, 查詢= 「選擇AE從AttemptEntity AE WHERE ae.result IS NULL,」 \t \t + 「和ae.correlationId這樣的:ID」) – ralyn

+0

再次,在IS NULL後移除逗號。 –

+0

我在NULL後刪除了逗號,現在看起來好了。謝謝。 – ralyn

1

你不能有%的NamedQuery,但是您可以將其設置爲您分配參數的值。

query.setParamter("id", 0000000101+ "%"); 

您還需要添加AND並在NULL後刪除逗號。

參考:Named Query with like in where clause