在java开发中,用Jpa 做持久层 使用的数据库是oracle 关于主键生成策略,及注解是怎样使用的?

之前用的是SQLserver 最近有个项目要用Oracle作为数据库。@GeneratedValue IDENTITY:表自增键字段,Oracle不支... 之前用的是SQLserver  最近有个项目要用Oracle 作为数据库。@GeneratedValue  IDENTITY:表自增键字段,Oracle不支持这种方式;Auto 的话是默认的选项。 我想有没有具体   jap+Oracle 关于ID自增 的实例 或者代码。 我想参考下 最好是开发实例运用过的。如有解答  不胜感激  展开
 我来答
jpsbbt
2012-03-21 · TA获得超过1548个赞
知道小有建树答主
回答量:1060
采纳率:100%
帮助的人:531万
展开全部
两种方式:
方式1:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解
@Id
@SequenceGenerator(name="名称A", sequenceName="库中已存在的sequence名称",allocationSize=递增值)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="名称A")

方式2:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解
@Id
@TableGenerator(name="名称A",allocationSize=递增值)//若不指定递增值,则生成的主键值不一定连续
@GeneratedValue(strategy=GenerationType.TABLE, generator="名称A")

总结:方式1:针对Oracle效率略高,但需要手工创建sequence才能使用。
方式2:不依赖数据库,可移植性好,但相比方式1,效率略低。
easyxu_翔
2012-02-19
知道答主
回答量:13
采纳率:0%
帮助的人:7.3万
展开全部
oracle自增 使用sequence,代码如下
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式