Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于在调用查询之前使用JPA刷新的问题_Java_Jpa_Transactions_Flush - Fatal编程技术网

Java 关于在调用查询之前使用JPA刷新的问题

Java 关于在调用查询之前使用JPA刷新的问题,java,jpa,transactions,flush,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)); 还是不用冲水就行 User user = new User(); em.persist(user); User aUser = em.find(User.cla

这只是一个简单的问题,但是在这段代码中是否需要刷新?注意,这将在JPA交易中

User user = new User();
em.persist(user);

em.flush;

User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
还是不用冲水就行

User user = new User();
em.persist(user);

User aUser = em.find(User.class,user.getId());
assert(user.equals(aUser));
或者同样的问题,但有一个更复杂的例子:

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));

在第一种情况下,只要
用户
有一个自动生成的id,就需要刷新,因为刷新之前没有分配id。如果未生成
id
em.find()
将从持久性上下文返回相同的实例,因此不需要刷新

在第二种情况下,不需要显式刷新,因为JPA在自动执行查询之前执行刷新(如果刷新模式是默认的
AUTO
,否则需要显式刷新)