Spring JPA + 在触发器中生成的 EclipseLink ID

Spring JPA + EclipseLink ID generated in trigger

我在实体上指定了一个 ID 列,如下所示:

@Id
@Column(name="id_seq", unique=true, nullable=false, precision=38)
private Long idSeq;

真的很基础。问题是该字段与其他几个字段一起设置在触发器中。

似乎没有适合这种需要的@Generated 选项。好的 ol' JDBC 我会通过调用 getGeneratedKeys() 来做到这一点。

有没有办法指定这个字段在插入后需要在实体中更新?

好吧,事实证明这样就完成了工作:

@ReturnInsert(returnOnly=true)

您还必须在实体上使用 MyJpaRespoitory.saveAndFlush() 而不是 .save(),以便在保存完成时查看实体中更新的值。

这适用于 Oracle,但可能不适用于所有平台。