首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate对序列sequence的批改

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

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);
?

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

热点排行