2012-06-17 48 views

回答

0

問題是你誤解了getMaxResults-方法。它與MAX函數沒有任何關係。如documentation中所述,它應該遵循以下方式:

查詢對象設置爲檢索的最大結果數。 如果setMaxResults未應用於 查詢對象,則返回Integer.MAX_VALUE。

在你的情況下,它似乎返回-1而不是Integer.MAX_VALUE。這顯然是不正確的。例如Hibernate 3.6.8.Final按照指定返回Integer.MAX_VALUE(2147483647)。方法setMaxResults限制查詢返回的最大行數。

你的情況getSingleResult是正確的使用方法。如果表中沒有任何行,結果將爲空。

Integer x = (Integer) em.createNativeQuery(
     "select max(AdvID) from Advertisement").getSingleResult(); 

如果不使用本地查詢具體的原因,使用JPQL查詢在拿煙Wadekar的答覆建議。

0

您可以嘗試下面的常規JPQL查詢,而不是使用本機查詢。

Integer maxAdvId = (Integer) em.createQuery("SELECT MAX(a.advID) from Advertisement a").getSingleResult(); 
相關問題