JPA:在非id列上使用@GeneratedValue

时间:2013-03-06 16:26:24

标签: jpa

我正在尝试使用我想要从DB序列填充的属性来持久化实体。我正在使用Oracle,创建了序列,通过sql验证了序列的工作原理,但我的属性却没有填充。这就是我所拥有的:

@GeneratedValue(generator = "RFQ_LINE_IDS_SEQUENCE", strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name="RFQ_LINE_IDS_SEQUENCE", sequenceName="RFQ_LINE_IDS_SEQUENCE", allocationSize=1000000000)
@Column(name = "external_line_item_id")
private String externalLineItemId;

我在网上看到的所有例子都显示这个注释与@Id一起使用,但我有另一个属性,我正在使用我的id。

我也试过以下无济于事:

@GeneratedValue(generator = "RFQ_LINE_IDS_SEQUENCE", strategy=GenerationType.SEQUENCE)
@GenericGenerator(name = "RFQ_LINE_IDS_SEQUENCE", strategy = "sequence",
  parameters = {@Parameter(name = "sequence", value = "RFQ_LINE_IDS_SEQUENCE")})
@Column(name = "external_line_item_id")
private String externalLineItemId;

2 个答案:

答案 0 :(得分:3)

JPA只要求在@Id字段上支持@GeneratedValue。一些JPA实现(例如DataNucleus JPA)支持它,但不是全部支持它。

答案 1 :(得分:0)

我为JPA创建了一个提案,以支持{id}属性的@GeneratedValue。请在此投票,以便将其纳入2.2 https://java.net/jira/browse/JPA_SPEC-113