我正在使用带有容器管理EntityManager的Oracle2.1.3来与Oracle11gDB进行交互。
我希望在EM上调用persist()后立即更新实体的@Id变量。
对Oracle数据库执行此操作的正确策略是什么?
我在这个站点上找到的示例都没有处理容器管理持久性的这个问题。
该实体如下所示:
@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()吗?
发布于 2013-03-06 19:39:43
是的,您必须提供一个@SequenceGenerator注释,以便JPA在persist()期间自动为实体分配一个新的ID。
刷新不是必需的。
https://stackoverflow.com/questions/15246101
复制相似问题