2010-08-25 38 views
1

我正在使用JPA 2作为企业应用程序,而我的DBA刚刚打了一个转折。如何将自定义对象标识注入到JPA实体中

他们要我使用该组的集中对象ID生成器为我所有的表。这意味着,而不是使用表值或序列表,我将需要调用Web服务以获得一批〜50个ID

然后,当我坚持任何新的对象,我需要注入此ID第一,并将其保存到表。

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

是否像我在坚持之前设置密钥一样简单?我怀疑会抛出一些带有ID设置错误的非托管实体。

+0

对不起,应该注意到我使用OpenJPA作为jpa2规范的实现。 – Eddie 2010-08-25 17:21:18

回答

1

更新:

更好的方法是实际指定上生成字段顺序策略,并指定一个自定义的序列类。

JPA每次插入新对象时都会调用此类的nextId()方法。

该方法允许在不干预每个实体的情况下保留完整的图形。


想通了。令人惊讶的复杂;) - 只需从关键字段中删除GeneratedValue注释。

它适用于SSN或电子邮件等本机Ids,但可以使用,不管来源如何。

@Entity 
public class Client{ 

    @Id 
    @Column(name="CLNT_ID") 
    private long key; 
    @Column(name="CLNT_NUM") 
    private String clientNumber; 
... 
} 
相关问题