首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EclipseLink 2.1.3,Oracle11g,使用容器管理的持久性后返回PK

EclipseLink 2.1.3,Oracle11g,使用容器管理的持久性后返回PK
EN

Stack Overflow用户
提问于 2013-03-06 19:26:33
回答 1查看 160关注 0票数 1

我正在使用带有容器管理EntityManager的Oracle2.1.3来与Oracle11gDB进行交互。

我希望在EM上调用persist()后立即更新实体的@Id变量。

对Oracle数据库执行此操作的正确策略是什么?

我在这个站点上找到的示例都没有处理容器管理持久性的这个问题。

该实体如下所示:

代码语言:javascript
复制
    @Entity
    @Table(name = "ANNOUNCEMENT_DELIVERY_LOG")
    public class AnnouncementDeliveryLog implements Serializable {

        @Id
        private BigDecimal id;
        @ManyToOne
        @JoinColumn(name = "ANNOUNCEMENT_ID ")
        private Announcements announcement;

        public AnnouncementDeliveryLog() {
        }

    }

我需要添加类似下面这样的内容吗?

代码语言:javascript
复制
@Column(nullable = false)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ANNOUNCEMENT_DELIVERY_LOG_SEQ")
@SequenceGenerator(name="ANNOUNCEMENT_DELIVERY_LOG_SEQ", sequenceName="ANNOUNCEMENT_DELIVERY_LOG_SEQ")

为了持久化这个实体,我只调用persist()。我还需要调用flush()吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 19:39:43

是的,您必须提供一个@SequenceGenerator注释,以便JPA在persist()期间自动为实体分配一个新的ID。

刷新不是必需的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15246101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档