我正在使用带有容器管理的EntityManager的EclipseLink 2.1.3来与Oracle 11g数据库连接。
我想在EM上调用persist()后立即更新Entity的@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()?
答案 0 :(得分:1)
是的,您必须提供@SequenceGenerator
注释,以便JPA在persist()
期间自动为实体分配新ID。
不需要冲洗。