Ash*_*wal 3 hibernate hbm2ddl hibernate-annotations
我hbm2ddl在基于hibernate的应用程序中使用生成数据库模式.hibernate.hbm2ddl.auto财产的价值是create-drop.
我正在@Entity为我的POJO课程使用注释.
@Entity
public class testTable1 {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
Long id;
}
@Entity
public class testTable2 {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
Long id;
}
Run Code Online (Sandbox Code Playgroud)
但是在执行代码时,我不断获得增量Id值.例如,对于2个表,Id(即Prim Key)应该以1开始.但是在插入记录之后Table 1,序列从下一个值开始Table 2.它应该从表2的1开始.我试过GenerationType.SEQUENCE&GenerationType.AUTO.什么都行不通:-(
当没有提供JPA规范指定的生成器时,您正在使用hibernate默认提供的全局序列生成器.为了有一个私人发电机应声明与注释的私人发电机@SequenceGenerator,并设置generator该属性@GeneratedValue注释
从javadoc中提取
@GeneratedValue
(可选)要在SequenceGenerator或TableGenerator批注中指定的主键生成器的名称.默认为持久性提供程序提供的id生成器.
SequenceGenerator
此批注定义了一个主键生成器,当为GeneratedValue批注指定了生成器元素时,该生成器可以通过名称引用.可以在实体类或主键字段或属性上指定序列生成器.生成器名称的范围对于持久性单元是全局的(跨所有生成器类型).例:
@SequenceGenerator(name="EMP_SEQ", sequenceName="private_sequence")
Hibernate建议新项目使用hibernate.id.new_generator_mappings = true,因为新生成器更高效,更接近JPA 2规范语义
完整的例子
@Entity
@SequenceGenerator(name="PRIVATE_SEQ", sequenceName="private_sequence")
public class test {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="PRIVATE_SEQ")
Long id;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4218 次 |
| 最近记录: |