set*_*pan 22 java hibernate jpa spring-mvc database-migration
目前我们使用mysql作为数据库,我们使用
@Generated Value(strategy = GenerationType.IDENTITY)
它在某些情况下完美地工作,我们需要将我们的数据库迁移到Oracle,那时它无法正常工作.如果有人知道这背后存在的实际差异以及它是如何工作的?
Nei*_*ton 20
如何使用Oracle"正常工作"(您没有像您所说的那样定义基本信息)?我没有看到与AUTO您的问题的相关性- 只是让实现选择它想要使用的内容.
" IDENTITY"(根据JPA javadocs和spec - 你应该指的是什么)意味着自动增量.在Oracle中没有这样的概念,但在MySQL,SQLServer和其他一些概念中.我希望任何体面的JPA实现都会在尝试这样的事情时标记错误.
但是,Oracle会允许使用" SEQUENCE"或" TABLE"策略
Ahm*_*rdi 12
标识排序使用数据库中的特殊IDENTITY列,以允许数据库在插入行时自动为对象分配id.许多数据库都支持标识列,例如MySQL,DB2,SQL Server,Sybase和Postgres.Oracle不支持IDENTITY列,但可以通过使用序列对象和触发器来模拟它们.
所以我更喜欢使用序列代替
序列对象使用特殊的数据库对象来生成id.序列对象仅在某些数据库中受支持,例如Oracle,DB2和Postgres.通常,SEQUENCE对象具有名称,INCREMENT和其他数据库对象设置.每次选择.NEXTVAL时,序列都会通过INCREMENT递增.
示例:
@Entity
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EMP_SEQ")
@SequenceGenerator(name="EMP_SEQ", sequenceName="EMP_SEQ", allocationSize=100)
private long id;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26544 次 |
| 最近记录: |