这里是我所得到的:为什么在参数中没有保存输出参数?
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()需要是异步的。 –