joe*_*arl 3 java jpa transactions flush
只是一个简单的问题,但是这段代码中需要刷新吗?请注意,这将在JPA事务中.
User user = new User();
em.persist(user);
em.flush;
User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud)
或者没有冲洗它会工作吗?
User user = new User();
em.persist(user);
User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud)
或者相同的问题,但更多涉及的例子:
User user = em.find(User.class,id);
user.setName("My Name");
em.merge(user);
em.flush; //Is this line needed?
User aUser = em.createQuery("select u from User where u.name = 'My Name');
assert(user.equals(aUser));
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,只要User具有自动生成的id,就需要刷新,因为它在刷新之前未分配.如果id未生成,em.find()则将从持久性上下文返回相同的实例,因此不需要刷新.
在第二种情况下,不需要显式刷新,因为JPA在自动执行查询之前执行刷新(如果AUTO默认情况下是刷新模式,否则需要显式刷新).
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |