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语句都可以执行了。就赶快动手写了一下,运行一下。竟然成功了,

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值