保留JPA后返回UniqueID

时间:2013-03-09 14:30:01

标签: java oracle jpa uniqueidentifier

我在Oracle中有一个dateID序列的唯一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); 

以上是我尝试过的各种各样的事情。当我使用刷新时,我得到一个错误,说“未找到实体”(我假设它正在查找基于预先存在的唯一ID为null的实体。是否有可能找回自动生成的日期+序列号?我'我可以通过查看插入的对象并直接复制uniqueID来保持和检索对象,但显然这是无用的。任何帮助非常感谢,如果你想看到错误消息等,请告诉我。我已经搜索过我或者看到“解决方案”似乎是我正在尝试的,或者一个人说他使用了“蛮力的解决方案”,但没有描述这意味着什么。

1 个答案:

答案 0 :(得分:0)

对于任何可能发生在此事上的人。我保留了数据库触发器并且刚刚使用了:

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

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