hibernate-------------------oracle问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate-------------------oracle问题相关的知识,希望对你有一定的参考价值。

请教:用hibernate annotation去映射数据库表。主键生成策略为sequence.
创建三个sequence语句主要为以下:
create sequence BUI_SEQ increment by 1 start with 1 maxvalue 10000 minvalue 1 cache 20 ;
create sequence LEV_SEQ increment by 1 start with 1 maxvalue 10000 minvalue 1 cache 20 ;
create sequence DOM_SEQ increment by 1 start with 1 maxvalue 10000 minvalue 1 cache 20 ;
以上三个序列分别为三个表自动生成主键。但问题来了,我上面设置的是每次递增1,但通hibernate存入数据库的时候,是每次递增50的。why ????????????

hibernate 部分代码:
@Entity
@SequenceGenerator(name="bui_seq",sequenceName="BUI_SEQ")
public class Building
//some fields
@Id
@GeneratedValue(generator="bui_seq",strategy=GenerationType.SEQUENCE)
public int getId()
return id;


@Entity
@SequenceGenerator(name="dom_seq",sequenceName="DOM_SEQ")
public class Domintory
//some fields
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="dom_seq")
public int getId()
return id;


@Entity
@Table(name="leve")
@SequenceGenerator(name="lev_seq", sequenceName="LEV_SEQ")
public class Level
//some fields
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="lev_seq")
public int getId()
return id;

求帮忙,求解决!在此先谢过。

更改
@SequenceGenerator(name="bui_seq",sequenceName="BUI_SEQ")

变为
@SequenceGenerator(name="bui_seq",sequenceName="BUI_SEQ",allocationSize = 1)
allocationSize属性可以定义每次增加的值
参考技术A 你在oracle中执行
select bui_seq.nextval from dual;

看每次变化是多少?追问

在oracle中查就是每次递增1,这咋回事?

Hibernate----配置文件Hibernate.cfg.xml

在Hibernate中大配置一般命名为“HIbernate.cfg.xml”

  Hibernate配置文件主要用于配置数据库连接和HIbernate运行时所需要的各种特性。

<?xml version=1.0 encoding=utf-8?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
<hibernate-configuration>
    <session-factory>
        <!-- 数据库JDBC驱动 -->
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!-- 数据库URL -->
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <!-- 数据库用户名 -->
        <property name="connection.username">szj</property>
        <!-- 数据库密码 -->
        <property name="connection.password">szj</property>
        <!-- 方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        
        <!-- 输出所有sql语句到控制台 -->
        <property name="hibernate.show_sql">true</property>
        
        <!-- 在 log 和 conlose 中打印出更漂亮SQL -->
        <property name="hibernate.format_sql">true</property>
        
        <!-- hbm2ddl  -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!-- 指定当前session范围和上下文 thread指当前线程来跟踪管理 -->
        <property name="current_session_context_class">thread</property>
        <!-- 映射文件配置,注意配置文件名必须包含其相对于classpath的全路径 -->
        <mapping resource="cn/happy/entity/Student.hbm.xml"/>
        
    </session-factory>
    
</hibernate-configuration>

 

以上是关于hibernate-------------------oracle问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring和Hibernate的注解整合 hibernate3和hibernate4/5的区别

hibernate.merge()方法怎么用

hibernate 异常 怎么解决

Hibernate之Hibernate环境配置

(转)Hibernate框架基础——Hibernate API及Hibernate主配置文件

Hibernate基础学习—Hibernate相关API介绍