6

我正在尝试使用要从数据库序列中填充的属性来持久化实体。我正在使用 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;
4

2 回答 2

4

JPA 仅要求在 @Id 字段上支持 @GeneratedValue。一些 JPA 实现(例如DataNucleus JPA)支持它,但并非全部都支持。

于 2013-03-06T16:28:04.873 回答
1

我已经为 JPA 创建了一个支持@GeneratedValue非 ID 属性的提案。请在此处投票以将其包含在 2.2 https://java.net/jira/browse/JPA_SPEC-113中

于 2016-04-05T11:52:47.347 回答