我在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来持久保存和检索对象,但是显然这是没有用的。非常感谢您的帮助,如果您想查看错误消息等,请告诉我。我或者看到的“解决方案”似乎是我正在尝试的解决方案,或者一个人说他使用了“强力解决方案”,但没有说明这是什么意思。

最佳答案

对于任何可能在此发生的人。我保留了数据库触发器,只是使用了:

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


我不需要使用@GeneratedValue或其任何变体。

09-30 12:09