假設我有以下HQL使用Hibernate兩次
EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);
似乎不起作用。有沒有人有一個想法如何解決這個問題仍然只使用一個參數?
假設我有以下HQL使用Hibernate兩次
EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);
似乎不起作用。有沒有人有一個想法如何解決這個問題仍然只使用一個參數?
setParameter(String name,Object val)
這用於將值綁定到指定參數。但是名稱可以在無關緊要的查詢中多次出現。因此,請檢查一次您是否有真正的查詢數據。
查看文檔here
從文檔
命名查詢參數的格式的標記部分正文:在查詢字符串名稱。通過調用 setParameter(「foo」,foo,Hibernate.INTEGER)將值綁定到整型參數:foo;例如, 。名稱可能會在查詢字符串中出現多次。
如果仍然ü沒有得到結果,那麼只用兩個人的名字嘗試,並設置
EntityManager.createQuery(「選擇從其中Ab =:PAR1或AC =:PAR2」 ).setParameter(「par1」,obj).setParameter(「par2」,obj);
這是完全正確的。看起來這個查詢是有點破的。 DBMS通過本地sql也有一個空的結果列表。 +1爲了這個好的描述 – DmiN 2013-04-29 09:55:16
你會得到什麼錯誤? – 2013-04-27 11:20:47
沒有錯誤。 Resultlist只是空的。 – DmiN 2013-04-27 11:21:38
你有有效的數據嗎?嘗試在persistence.xml中啓用 - showsql = true並獲取原始sql – Sanath 2013-04-27 11:25:43