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的区别