2012-11-20 29 views
6

看起来像Hibernate没有这种语法,对吗? enter image description here在Hibernate中如何使用mysql的语法,如ifnull(max(Id),0)

public int MaxIdenx() { 
    int max = 0; 
    String hql = "select ifnull(max(empId),0)from Emp"; 
    Query query = session.createQuery(hql); 
    List currentSeq = query.list(); 
    if (currentSeq == null) { 
     return max; 
    } else { 
     max = (Integer) currentSeq.get(0); 
     return max + 1; 
    } 
} 
+1

什么错误,你得到了什么?请张贴它。 –

+0

'empId'可以'NULL'吗? – zerkms

+0

顺便说一句,你的功能没有多大意义 - DB应该保持序列本身,而不是你的应用程序。 – zerkms

回答

11

没有与此有几个问题....

不管虽然,代码将是...

public int MaxIdenx() { 
    int max = (Integer)session 
     .createQuery("SELECT COALESCE(MAX(empId), 0) FROM Emp") 
     .uniqueResult(); 

    return max + 1; 
} 
+0

谢谢你的答案。 – user189297

+0

谢谢你的答案.. – Annu