读书人

Hibernate对序列sequence的批改

发布时间: 2012-09-01 09:33:03 作者: rapoo

Hibernate对序列sequence的修改

??? 从数据库中取序列的下一个,在网上查找了好多资料终于找到了一个,Hibernate对序列sequence的批改,如下:

?

public Integer getNextVal() {Number n = (Number) this.getHibernateTemplate().execute(new HibernateCallback() {@SuppressWarnings("unchecked")public Object doInHibernate(Session session)throws SQLException, HibernateException {SQLQuery query = session.createSQLQuery("select seq_sp.nextval SEQID from dual");query.addScalar("SEQID",new org.hibernate.type.IntegerType());List children = query.list();return (Number) children.iterator().next();}});return n.intValue();}

?当时很高兴,但是我要一次取出多个序列,这个问题可难倒我了。网上查了半天找到SQL语句可以修改序列的步长,alter sequence seq increment by10,就是把序列的步长设置为什10。

??? 虽然SQL语句可以实现,但是HQL里面没有alter这个语句。这下我想破脑袋也不知道要怎么办了。偶然的在看上面的代码的时候看到了,SQLQuery这个类,想这个应该是什么SQL语句都可以执行了。就赶快动手写了一下,运行一下。竟然成功了,Hibernate对序列sequence的批改

public void alterSequence(int value) {SQLQuery query = getHibernateSession().createSQLQuery("alter sequence seq_sp increment by "+value);query.executeUpdate();}
?
tbStorageOldProductDao.alterSequence(value);        Integer val = tbStorageOldProductDao.getNextVal();        tbStorageOldProductDao.alterSequence(1);
?

大功告成,记录一下,不知道有没有什么隐患。。。。。。

读书人网 >软件架构设计

热点推荐