[英]JPA Specification join on fetch is not working (Hibernate, Spring Data JPA)
[英]JPA / Hibernate Spring @Transactional vs. JOIN FETCH
我正面臨着有趣的 LazyInitializationException 解決方案。 為了防止這種情況(在 OneToMany 或 ManyToMany 上),一種已知的解決方案是使用 JOIN FETCH 查詢。 你可以看到她的幾個例子之一: https ://thoughts-on-java.org/best-practices-for-many-to-many-associations-with-hibernate-and-jpa/
其他更簡單的解決方案是使用 Spring 中的 @Transactional。 例如像這樣:
@DeleteMapping(value ="/product/{tagId}")
@ResponseBody
@Transactional
public String deleteProductWithoutRelation(@PathVariable String product, Model model) {
Optional<Product> pr = productService.selectProduct(product);
if (pr.isPresent()) {
tag.get().getCustomer().size(); //usualy throws LazyInitializationException,
//without JOIN-FETCH Statment or @Transactional
return deletedTagId;
}
當然,你可以在repository service 中放置@Transactional 的一些方法,來封裝這個解決方案。 那么這兩種解決方案的優點或缺點是什么?
這里有幾件事我們需要解開。
建議:您應該嘗試使用適當的 JPQL/Criteria/SQL 語句獲取呈現視圖所需的所有數據,而不要過多依賴重新選擇惰性字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.