Гибернация / Spring: Ошибка загрузки ленивой коллекции в a @Transactional

Хотя я понял ленивую / нетерпеливую загрузку, но, очевидно, не понимаю:

У меня есть служба, помеченная @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 **/
}
1
задан niklassaers 15 September 2010 в 10:05
поделиться