1

我正在使用带有容器管理的 EntityManager 的 EclipseLink 2.1.3 与 Oracle 11g DB 交互。

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

使用 Oracle DB 执行此操作的正确策略是什么?

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

实体看起来像这样:

    @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() {
        }

    }

我需要添加以下内容吗?

@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()吗?

4

1 回答 1

1

是的,您必须提供@SequenceGenerator注释,以便 JPA 在persist().

不需要冲洗。

于 2013-03-06T11:39:42.570 回答