`

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

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

分享到:
评论

相关推荐

    Hibernate注解

    * 7.sequence 调用谨慎数据库的序列来生成主键,要设定序列名,不然hibernate无法找到。 * 例:@GeneratedValue(generator = "paymentableGenerator") * @GenericGenerator(name = "paymentableGenerator", ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法  6.4.1 increment标识符生成器  ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联...

    精通Hibernate:对象持久化技术第二版part3

    本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法  6.4.1 increment标识符生成器  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法  6.4.1 increment标识符生成器  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法  6.4.1 increment标识符生成器  ...

    真实项目中关于主键生成方式的剖析(JPA)

    本资源为原创. 其中剖析了hibernate+JPA对主键的生成方式的分类,以及在真实项目中如何使用,并且剖析各种数据库间的主键序列(sequence)原理以及使用.

    j2ee企业机试的16道题(附代码)

    j2ee企业机试的16道题(附...(序列名要与hibernate映射文件中所需的名字一致) -- Create sequence create sequence 序列名 minvalue 1 maxvalue 9999999999999999999999999999 start with 9 increment by 1 nocache;

    java面试题

    hibernate中一对多配置文件返回的是什么? 63 71.17. hibernate拒绝连接、服务器崩溃的原因?最少写5个 63 71.18. Hibernate主键介绍 63 71.18.1. Assigned 63 71.18.2. Hilo 63 71.18.3. Increment 64 71.18.4. ...

    从J2SE到J2EE知识点介绍

    4. 序列化 76 (四) 多线程 80 1. 概念与原理 80 2. 两种实现方式 81 3. 生命周期及状态转换 84 4. 线程调度 85 5. 线程同步 92 三. Jsp 101 (一) myeclipse上配置Tomcat服务器 101 (二) Jsp+servlet+bean版Hello...

    Java学习笔记-个人整理的

    {12.24}sequence}{189}{section.12.24} {12.25}PL/SQL}{189}{section.12.25} {13}JDBC}{191}{chapter.13} {13.1}forName}{191}{section.13.1} {13.2}JDBC}{191}{section.13.2} {13.3}连接Oracle数据库及操作}{...

Global site tag (gtag.js) - Google Analytics