我使用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 .....