Хотя я понял ленивую / нетерпеливую загрузку, но, очевидно, не понимаю:
У меня есть служба, помеченная @Transactional, но когда я пытаюсь изменить полученный список (доступ его объекты), я получаю "org.hibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию ролей: tld.myproduct.data.entities.CategoryType.translatableText, сеанс или сеанс не был закрыт ". Любые предложения, почему я не могу получить доступ к своим нижним объектам?
ОБНОВЛЕНИЕ: исключение: исключение происходит в строке "type.getTranslatableText (). size ()"
Ура
Ник
// The service
@Service("categoryTypeService")
@Transactional("transactionManager")
public class CategoryTypeServiceImpl extends AbstractCRUDServiceImpl<CategoryType, Integer> implements CategoryTypeService {
@SuppressWarnings("unchecked")
@Override
public List<CategoryType> getAll() {
List<CategoryType> list = DAO.getSession().createCriteria(CategoryType.class).list();
for(CategoryType type : list)
type.getTranslatableText().size(); // Access TranslatableText to demonstrate problem
return list;
}
}
// The entity
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
@Configurable(preConstruction=true)
public class CategoryType {
@Id
@Column(nullable = false)
private Integer id;
@Column(length = 50, nullable = true)
private String description;
@Column(name = "TranslatableDescriptionId", nullable = false)
private Integer TranslatableDescriptionId;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "Id", referencedColumnName="TranslatableDescriptionId", insertable=false, updatable=false)
private Set<TranslatableText> translatableText;
/** getters and setters **/
}