簡體   English   中英

有關在調用查詢之前使用JPA進行刷新的問題

[英]Question about flushing with JPA before a query is called

只是一個簡單的問題,但是這段代碼中需要刷新嗎? 請注意,這將在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));

在第一種情況下,只要User具有自動生成的id,就需要刷新,因為它在刷新之前沒有分配。 如果未生成id ,則em.find()將從持久性上下文返回相同的實例,因此不需要flush。

在第二種情況下,不需要顯式刷新,因為JPA在自動執行查詢之前執行刷新(如果刷新模式是默認的AUTO ,否則需要顯式刷新)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM