我想在新窗口中打开有关我联系人的信息,但是当我按下时:
<a href="/contactData/${contact.id}" target="_blank">${contact.contactName}</a>
我有这样的错误:
org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165) org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286) org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) kz.adilka.springsecurity.app.model.Contact _ _ $$ jvsta24_0.getContactName(联系_ _ $$ jvsta24_0.java)
这是我必须打开的jsp文件:
<table class="tg">
<tr>
<th width="80">ID</th>
<th width="120">Name</th>
<th width="120">Mail</th>
<th width="120">Phone</th>
<th width="120">City</th>
</tr>
<tr>
<td>${contact.id}</td>
<td>${contact.contactName}</td>
<td>${contact.contactEmail}</td>
<td>${contact.contactPhone}</td>
<td>${contact.contactCity}</td>
</td>
</tr>
</table>
来自我的控制器的方法,用于在新窗口中打开信息:
@RequestMapping("contactData/{id}")
public String contactData(@PathVariable("id") int id, Model model) {
model.addAttribute("contact", this.contactService.getContactById(id));
return "contactData";
}
我的实体:
@Entity
@Table(name = "contact")
public class Contact {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "contact_name")
private String contactName;
@Column(name = "contact_phone")
private String contactPhone;
@Column(name = "contact_city")
private String contactCity;
@Column(name = "contact_mail")
private String contactEmail;
答案 0 :(得分:0)
这是因为您已经使用lazy(显然)注释了您的实体,但是您在JSP中获取了数据,并且关闭了与数据库的连接,并且无法获取它。
解决方案1(推荐):
使用需要在窗口中显示的数据将您的实体转换为DTO。
解决方案2:
使用&#34;渴望&#34;获取所有信息,但如果您有多个信息,这可能不会很好。