2011-08-04 104 views
1

我....Java持久日期查詢

string qString = "select e from table where id= :id and trunc(Date) = TO_Date('03/04/2010','MM/DD/YYYY') 

Query newQuery = entityManager.createNamedQuery(qstring) 
newQuery.setParameter("id",id); 

如何設置的日期部分,而不是硬編碼呢?

我試過 newQuery.setParameter("date",date,TemporalType.Date)但它沒有爲我工作。任何指針? 我也曾嘗試使用只是「newQuery.setParameter(‘日期’,日期)」,並使用日期作爲結尾我一個說法......

string qString = "select e from table where id= :id and trunc(Date) = :date 

,但我相信他們的格式不正確,什麼是正確的方法來做到這一點?

*更新***我想用SQL日期來做到這一點。會及時向大家發佈!!!

+0

您是否嘗試過使用數字通配符比如'?1'? – Jeremy

+0

什麼是數字通配符?我沒有聽說過它是如何起作用的? – Kevin

+0

'em.createQuery(「from table where id =?1」)。setParameter(1,id)' – Jeremy

回答

1

將它們存儲在字符串中出現問題就像查詢一樣?

String date = '03/04/2010'; 
String dateFormat = 'MM/DD/YYYY'; 

String qString = "SELECT e FROM table WHERE id = :id 
AND trunc(DATE) = TO_Date(date,dateFormat)"; 
+0

正確,這將起作用,但我認爲有一個更好的方法來做到這一點,我覺得好的做法讓你學到更多。我可以這樣做,但它只是感覺不對 – Kevin

+0

我認爲這是一個比硬編碼值更好的做法。如果你想改變這些值,你可以在文件頂部更改一次,它們是改變了他們參考的每個地方。 –

+0

我同意這是一個比傳入硬編碼值更好的做法,但我寧願從設置參數傳遞簡單日期,而不是傳遞字符串。你不同意處理持久性會更可行嗎? – Kevin