項目中,用到一個序列作單號,框架用的是ssh,在dao層去拿的時候,運行時報錯為dual is not mapped,[select *.nextval nextvalue from dual]
后來檢查發現,獲取方式不對,於是改成下面這樣,就可以正常獲取了
//獲取seq的最后一個值 public String findSeq(){ try { String sql = "select PATIENT_SEQ.nextval nextvalue from dual"; Integer maxId = (Integer)(this.getSession().createSQLQuery(sql).addScalar("nextvalue", Hibernate.INTEGER) ).uniqueResult(); return maxId.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
如果集成了HibernateDaoSupport還可以使用一下方法:
public String findSeq(){ String queryString = "select PATIENT_SEQ.Nextval nextvalue from dual";
return (String) getHibernateTemplate().find(queryString).get(0);
}
1.先返回list集合getHibernateTemplate().find(queryString)
2.取得list的第一個元素:list.get(0);
3.list.get(*)的結果是ojbect,所以要么強轉(String)list.get(0);,要么list.get(0).toString();
