如何通过JPA-Hibernate从Java代码自动添加Oracle中表的主键?

时间:2016-07-09 08:07:04

标签: oracle hibernate jpa

我使用Java代码(带有Hibernate 4.1的JPA2)插入到Oracle db 12c中。

表:部门: 名称空类型

DEPTNO NOT NULL NUMBER(4)
DNAME VARCHAR2(14) LOC VARCHAR2(13)

从Java代码中,我为DNAME和LOC插入了价值作为'研究'伦敦'。 实体类:

@Entity(name="Department")
@Table(name="mydept")
public class Department {
    @Id 
    @SequenceGenerator(name = "MYDEPT_SEQ", sequenceName ="MYDEPT_SEQ", allocationSize = 10, initialValue = 50)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYDEPT_SEQ")
    @Column(name="deptno")
    private int id;
    @Column(name="dname")
    private String name;
    @Column(name="loc")
    private String location;

MYDEPT_SEQ: 创建序列mydept_seq; 因此它采用默认值,如MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1。

从Java生成的id是随机的,并且采用偶数-ve值。 但是,不应该通过在java实体类中为@SequenceGenerator指定的属性覆盖这些值吗?

不使用hibernate.cfg,而是使用Annotations,如上面的Entity类所示。

persistence.xml:

<!-- Hibernate properties -->
            <property name="hibernate.connection.pool_size" value="1"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.id.new_generator_mappings" value="true"/>
            <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>

如何使代码遵循allocationSize = 10,initialValue = 50,即插入deptno为50,60,70 .....

0 个答案:

没有答案