【发布时间】:2019-03-13 23:36:55
【问题描述】:
我有 2 个 bean 类(ticketEntity,ticketCircuitInfo)分别映射到 1 个表
我还有 1 个ticketEntity(primary key) 可以有多个ticketCircuitInfo(forign key)
ticketEntity bean 具有以下属性:
@Id
@Column(name = "ticket_id", unique = true, nullable = false)
private String ticketId;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket", cascade =CascadeType.ALL)
private Set<TicketCircuitInfo> ticketCircuitInfo;
ticketCircuitInfo bean 具有以下属性:
@GenericGenerator(name = "generator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "ticket"))
@Id
@Column(name = "ticket_id", unique = true, nullable = false)
private String ticketId;
@ManyToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private TicketEntity ticket;`
我明白了:
com.sun.jdi.InvocationException 发生调用方法。
调试时在线ticket.ticketCircuitInfo()。
正在打印的其他异常是:
org.hibernate.LazyInitializationException: 延迟初始化角色集合失败:ticketCircuitInfo,无法初始化代理 - 没有会话
【问题讨论】:
-
您如何连接到您的数据库以检索您的实体?发生的事情是您从数据库中取出您的实体,然后您的会话关闭。当您尝试查询 Lazy 属性时,它会因为会话不可用而失败。了解如何连接到数据库是为您提供合适解决方案的关键。