1

EclipseLink 2.1.3 をコンテナー管理の EntityManager と共に使用して、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

はい、@SequenceGeneratorJPA がエンティティに新しい ID を自動的に割り当てるために、アノテーションを提供する必要がありますpersist()

フラッシュは必要ありません。

于 2013-03-06T11:39:42.570 に答える