3
我真的不明白。JPA內部運作
如果我堅持一個新的項目,然後用它來得到自動生成的關鍵,它失敗:
class BookManagerBean {
@PersistentContext
EntityManager em;
@Override
public void addBook(Book book) {
em.persist(book);
}
}
//...somewhere else
@GetThisObjectByJNDI-OrInject
BookManagerRemote bookManager;
Book book = new Book("Writer","Title");
bookManager.addBook(book);
book.getBookid() //<--NULL, didn't get synched, but new data with id in DB is fine
但是,如果我回到持久化的項目,它的工作原理:
class BookManagerBean {
@PersistentContext
EntityManager em;
@Override
public Book addBook(Book book) {
em.persist(book);
return book;
}
}
//...somewhere else
@GetThisObjectByJNDI-OrInject
BookManagerRemote bookManager;
Book book = new Book("Writer","Title");
bookManager.book = addBook(book);
book.getBookid() // <--- Auto-generated id is right here! It's synched!
如何這可能嗎?
您正在使用哪個持久性提供程序?休眠?的EclipseLink? –
檢查返回的書是否是傳入addBook的同一實例。序列化可能在遠程傳遞時發生。 – Chris
@Kevin EclipseLink – Croo