我正在将 JPA 2 用于企业应用程序,而我的 DBA 只是给我一个转折点。
他们希望我为我的所有表格使用该组的集中对象 ID 生成器。这意味着我需要调用 Web 服务来获取一批 ~50 个 id,而不是使用表值或序列表。
然后,当我持久化任何新对象时,我需要先注入这个 id并将其保存到表中。
那么我将如何操纵实体的@Id 列来处理这个问题。
是否像在我坚持之前设置密钥一样简单?我怀疑这会引发某种带有 ID 设置错误的非托管实体。
更新:
更好的方法是在 Generated 字段上实际指定 Sequence 策略并指定自定义 Sequence 类。
然后,JPA 将在每次插入新对象时调用此类的 nextId() 方法。
此方法允许持久保存完整图,而无需手动干预每个实体。
弄清楚了。非常复杂;) - 只需从键字段中删除 GeneratedValue 注释。
它适用于 SSN 或电子邮件等原生 ID,但无论来源如何都可以使用。
@Entity
public class Client{
@Id
@Column(name="CLNT_ID")
private long key;
@Column(name="CLNT_NUM")
private String clientNumber;
...
}