我在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或其任何变体。