LazyInitializationException, когда поле стремится - PullRequest
2 голосов
/ 31 марта 2011

У меня есть класс OmQcActivity, например:

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name="OM_QC_ACTIVITY")
public class OmQcActivity{
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumn(name="STATUS_ID")
   private Codesc status;
}

codec - это другая сущность.

В своем коде я написал:

OmQcActivity  myactivity = findQCActivityById(5);
Codesc status = myactivity.getCodesc();

@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    public OmQcActivity findQCActivityById(Long id) {
        return session.load(persistentClass, id);
    }

однако яget:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at com.mycompany.model.OmQcActivity_$$_javassist_11.getStatus(OmQcActivity_$$_javassist_11.java)

как я могу получить исключение Lazy, если тип выборки нетерпелив?

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

load() не загружает объект немедленно, он возвращает ленивый прокси, который извлекает реальные данные при первом вызове метода.В большинстве случаев вам нужно использовать get() вместо load().

0 голосов
/ 31 марта 2011

Нашел ссылку .Если в вашей сущности Codesc есть аннотация CollectionOfElements, то возникнет исключение относительно отложенной инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...