1

我在 Oracle 中有一个唯一的日期 + 序列 ID。示例:20130307-000021

我的实体对象 uniqueID 如下所示:

@Id
// @GeneratedValue
// @Basic(optional = false)
// @NotNull
// @Size(min = 1, max = 15)
@Column(name = "UNIQUE_ID")
private String uniqueId;

每当我使用 @GeneratedValue 或其变体时,我都会收到“未找到序列”或其他一些错误。在我持久化一个对象后,我试图取回由 Oracle 数据库生成的唯一 ID。

      this.dbConn.persist(orderDetail);
      this.dbConn.flush();
      //this.dbConn.refresh(orderDetail);
      //OrderDetails od = new OrderDetails();
      //od =(OrderDetails)this.dbConn.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(orderDetail); 

以上是我尝试过的一些不同的事情。当我使用刷新时,我收到一条错误消息,提示找不到“实体”(我假设它正在根据 null 的预持久唯一 ID 查找实体。是否可以取回自动生成的日期+序列号?我通过查看插入的对象并直接复制uniqueID,我能够很好地持久化和检索对象,但显然那是无用的。非常感谢任何帮助,如果您想查看错误消息等,请告诉我。我已经四处搜索我要么看到我正在尝试的“解决方案”,要么有人说他使用了“蛮力解决方法”,但没有描述这意味着什么。

4

1 回答 1

0

对于任何可能发生这种情况的人。我保留了数据库触发器并使用了:

 @Id
 @Basic(optional = false)
 @NotNull
 @Size(min = 1, max = 15)
 @Column(name = "ORDER_ID")
 private String orderId;

I didn't need to use @GeneratedValue or any of its variants.

于 2014-08-28T15:14:22.980 回答