如何将自定义对象ID注入JPA实体

时间:2010-08-25 17:14:38

标签: java orm jpa jpa-2.0 openjpa

我正在使用JPA 2进行企业应用程序,而我的DBA只是给我带来了麻烦。

他们希望我在我的所有表格中使用群组的集中对象ID生成器。这意味着而不是使用表值或序列表,我需要调用一个Web服务来获得一批~50个

然后,因为我坚持使用任何新对象,我需要首先注入此ID ,然后将其保存到表中。

那么我如何操纵实体的@Id列来处理这个问题。

在我坚持之前设置密钥是否简单?我怀疑会抛出某种ID设置错误的非托管实体。

1 个答案:

答案 0 :(得分:1)

更新

更好的方法是在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;
...
}