【发布时间】:2016-11-14 09:47:49
【问题描述】:
在使用 Hibernate 持久化实体的上下文中,我想在开发人员收到 LazyInitializationException,... no session or session was closed 时为他们提供更多线索。
我考虑过在延迟加载的字段 getter 中捕获它,然后抛出带有新消息的 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)
但是没有达到目标,你知道为什么吗? 顺便问一下,这是个好主意吗?
【问题讨论】:
标签: java hibernate exception-handling