我使用MySQL和有以下實體:JPA:Id列可設置的自動和手動
class MyEntity {
@Id
@GeneratedValue(strategy=IDENTITY)
@Column(name="id")
private Integer id;
}
不過,我仍希望能夠手動設置ID!
問題是INSERT永遠不會插入id列。例如,當 這樣做:
MyEntity e = new MyEntity();
e.setId(15);
em.persist(e);
em.flush();
em.refresh(e);
下面的查詢將被製作:
INSERT INTO myEntities (col1, col2, col3) VALUES (?, ?, ?)
SELECT id, col1, col2, col3 FROM myEntities WHERE (id = 15)
,因此ID仍然會自動生成和refresh()
將 結果EntityNotFoundException
。
如果我根本沒有設置@GeneratedValue
,那麼這種情況下工作正常, 但是當自動生成值時,LAST_INSERT_ID()
將不會被調用。
是否有可能自動設置ID列和 ,就像在MySQL中一樣?
謝謝,很高興知道。你知道是否有計劃在JPA 2中改變這個嗎? – 2009-05-20 12:05:50