我有一个具有自动生成 id 的新 JPA 实体,并且我坚持它。之后,我想再次获取它,对其进行修改并保留更改。
新实体通过自动生成的 id 持久化到数据库中,但实体bookid
保持为空。这样我就不能使用 getBook(id) 函数再次找到它。
@Stateless
public class BookManager implements BookManagerRemote {
@PersistenceContext
EntityManager em;
@EJB
Authenticator auth;
public BookManager() {
}
@Override
public void addBook(String user, Konyv konyv) throws InsufficentPrivilegesException {
if (auth.isAdmin(user)) {
em.persist(konyv);
} else {
throw new InsufficentPrivilegesException();
}
}
@Override
public Konyv getBook(String user, Integer bookid) throws InsufficentPrivilegesException {
if (auth.isAdmin(user)) {
return em.find(Konyv.class, bookid);
} else {
throw new InsufficentPrivilegesException();
}
}
}
-
Book mistypedBook = new Book("Stanislaw Lem", "Kibeliada");
bookmanager.addBook(name, mistypedBook);
Book whopsBook = bookmanager.getBook(name, mistypedBook.getBookid()/*<-ID IS NULL*/);
如何将新持久化的实体与数据库同步?我在持久问题后看到了 JPA Container 托管实体更新,但我试图在方法结束后使用实体的 id。到时候不应该有id吗?