OpenSessionInViewFilter とセクションで説明されているオブジェクトに問題があり、特定のリクエストで実行すると、次のことが発生します。
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ... , could not initialize proxy - no Session
私のコントローラー:
@Controller
public class ProdutoIntercambiavelController {
@Autowired
private IProdutoService produtoService;
private Produto getProduto(HttpSession session){
return (Produto)session.getAttribute("produto");
}
private void setProduto(Produto produto, HttpSession session){
session.setAttribute("produto", produto);
}
@RequestMapping(value="/Produto/Editar/{id}/Intercambiavel/", method= RequestMethod.GET)
public String index(@PathVariable int id,Model model, HttpSession session){
if (getProduto(session)==null)
setProduto(produtoService.Abrir(id), session);
model.addAttribute("produto", getProduto(session));
return "editintercambiavel";
}
私のエンティティ:
@Entity
public class Produto implements Serializable {
...
@OneToMany(fetch=FetchType.LAZY)
private List<ItemKitProduto> itensKitProduto = new ArrayList<ItemKitProduto>();
@OneToMany(mappedBy="produto_pai", fetch=FetchType.LAZY)
private List<Produto> intercambiaveis = new ArrayList<Produto>();
@OneToOne
private Produto produto_pai;
}
セッションでエンティティを処理するためのベスト プラクティスは何ですか?