【问题标题】:How to inject custom object ids into JPA entities如何将自定义对象 ID 注入 JPA 实体
【发布时间】:2011-04-03 20:50:45
【问题描述】:

我正在将 JPA 2 用于企业应用程序,而我的 DBA 只是给了我一个惊喜。

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

然后,当我持久化任何新对象时,我需要先注入此 id,然后将其保存到表中。

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

在我坚持之前设置一个密钥那么简单吗?我怀疑这会引发某种带有 ID 设置错误的非托管实体。

【问题讨论】:

  • 对不起,应该注意到我使用 OpenJPA 作为 jpa2 规范的实现。

标签: java orm jpa jpa-2.0 openjpa


【解决方案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;
...
}

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多