我越來越瘋狂,我使用Spring MVC的3.1.2和傑克遜2Spring MVC的3.1.2 +傑克遜2:LazyInitializationException中時懶洋洋地初始化集合 - 沒有會話或會話關閉
有錯誤我有以下的模型類:
@Entity
@Table(name = "USER")
@JsonIgnoreProperties(ignoreUnknown=true)
public class User implements Serializable
{
@Id
@SequenceGenerator(name = "USER_ID", sequenceName = "USER_ID_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_ID")
private Long id;
@Column(length = 50, nullable = false)
private String firstName;
@Column(length = 50, nullable = false)
private String lastName;
@ManyToMany
@JoinTable(name = "FRIENDS",
joinColumns = @JoinColumn(name = "personId"),
inverseJoinColumns = @JoinColumn(name = "friendId")
)
@JsonManagedReference
private List<User> friends;
@ManyToMany
@JoinTable(name="FRIENDS",
[email protected](name="friendId"),
[email protected](name="personId")
)
@JsonIgnore
private List<User> friendOf;
// Other attributes and methods...
}
當我到達用戶的單個實例是正確傑克遜序列化。但是,當我試圖讓用戶包含的朋友的一個實例,下面的異常被拋出:
org.hibernate.LazyInitializationException:無法初始化懶洋洋作用 的集合:com.frooid.model.User .friends,沒有會話或 會話關閉
我使用一個單一的HQL得到這個實例:
select u from User u left join fetch u.friends f where u.id = :id
感謝大家!
你能發佈試圖訪問集合的代碼嗎?它是否訪問jsp或控制器中的集合? –
我正在使用Spring MVC訪問它,通過控制器訪問服務,然後在DAO中訪問它。 Controller使用getJSON方法通過JQuery訪問。 –
也許一個愚蠢的問題,但你的服務標記@Transactional?你可以發佈你的服務方法嗎? –