Господа, что это за хрень с хибернейтом:
@ManyToMany(fetch = FetchType.EAGER, targetEntity = Role.class)
@JoinTable(
name = "users_roles",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")}
)
public Set<Role> getRoles() {
return roles;
}
beginTransaction();
user = (User) session.
createCriteria(User.class).
add(Restrictions.eq("login", action.getLogin())).
add(Restrictions.eq("password", action.getPassword())).
uniqueResult();
session.flush();
commit();
if (user instanceof User) {
doSmth(user);
}
Вот на doSmth(user) идет итерирование по вышеуказанной коллекции, где, собственно, происходит:
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
Что еще за хрень? Гугли молчат, а то, что дают - для FetchType.LAZY.
Испробовано: Hibernate 3.2, 3.3, 3.6. Четверку и пятерку еще не пробовал.