這裏是我所得到的:爲什麼在參數中沒有保存輸出參數?
public User register(User u) {
em.persist(u);
System.out.println("USER id: " + u.getIduser()); // INFO: USER id: 0
em.flush();
System.out.println("USER id: " + u.getIduser()); // INFO: USER id: 1
return u;
}
即使我省略了調用flush()
儘管用戶爲堅持在DB(MySQL的,我用glasssfish 4從日食)。那麼爲什麼我需要調用flush來設置id(它在方法出口時顯然是自動調用的,但是說我想在register()
中使用該id)?
順便說一句,flush()被調用的事實表明事務正在進行嗎?
更新:這裏的EJB類:
@Stateless
public class UserService {
@PersistenceContext
private EntityManager em;
public User register(User u) {
em.persist(u);
// em.flush(); // not needed - called on exit - maybe I have a
// transaction after all
return u;
}
}
UserService從'@ManagedBean @ViewScoped public class UserController {@EJB private UserService service; }'。我終於猜測題目問題的答案是persist()需要是異步的。 –