我不知道返回最大ID时怎么写,请回答。
我在sessionbean中编写了这段代码,但它返回-1。
@Override
public int searchMaxAdvID() {
int adid=em.createNativeQuery("select max(AdvID) from Advertisement").getMaxResults();
return adid;
}发布于 2012-06-18 01:06:24
问题是您误解了getMaxResults-method。它与MAX函数没有任何连接。正如documentation中所说,它应该按照以下方式运行:
将查询对象设置为检索的最大结果数。如果setMaxResults未应用于查询对象,则返回Integer.MAX_VALUE。
在您的例子中,它似乎返回-1而不是Integer.MAX_VALUE。这显然是不正确的。例如,Hibernate 3.6.8Final返回指定的Integer.MAX_VALUE (2147483647)。方法setMaxResults限制查询返回的最大行数。
在您的例子中,使用getSingleResult是正确的方法。如果表中没有任何行,则result将为null。
Integer x = (Integer) em.createNativeQuery(
"select max(AdvID) from Advertisement").getSingleResult();如果没有特定的理由使用原生查询,请按照Nayan Wadekar的回答中的建议使用JPQL查询。
发布于 2012-06-18 00:28:07
您可以尝试下面的常规JPQL查询,而不是使用原生查询。
Integer maxAdvId = (Integer) em.createQuery("SELECT MAX(a.advID) from Advertisement a").getSingleResult();https://stackoverflow.com/questions/11068960
复制相似问题