Hibernateの永続エンティティのコンテキストでは、LazyInitializationException,... no session or session was closed
を取得したときに開発者に手がかりを与えたいと思います。LazyInitializationExceptionをキャッチしてIllegalStateExceptionをスローすると、それは良い考えですか?
私は遅延ロードフィールドゲッターでそれをキャッチについて考え、その後、新しいメッセージではIllegalStateExceptionをスローしました:
@OneToMany(mappedBy = "whatever", fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.PERSIST })
@JoinColumn(name = "USER_ID")
private List<User> userList = new ArrayList<User>();
public List<User> getUserList() {
try {
List<User> userList = this.userList;
return userList ;
} catch (LazyInitializationException e) {
throw new IllegalStateException("Here I explain everything", e);
}
}
はIllegalStateExceptionがに完璧にフィット思わ:
シグナルことメソッドが不正または不適切な時刻に呼び出されました 時刻。言い換えれば、Java環境またはJavaアプリケーションは、要求された操作に対して適切な状態の ではありません。
(出典:https://docs.oracle.com/javase/7/docs/api/java/lang/IllegalStateException.html)
しかし、漁獲量に達していない、あなたはなぜ見ることができますか?ところで、これは良いアイデアですか?
であるあなたがた遅延ロードを失います.size()は例外を発生させます。そして、私はそのトリックの醜さが利益の価値がないかもしれないことに同意します。Merci beaucoup。 – Julien