2016-06-03 3 views
0

У меня есть проблема с моей службы: DAO:не удалось инициализировать прокси - не сессии

public Oficina find(String codigoDir3) { 
    try{ 
     // crear la query 
     CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); 
     CriteriaQuery<Oficina> cq = cb.createQuery(Oficina.class); 

     // configurar la query 
     Root<Oficina> from = cq.from(Oficina.class); 
     cq.where(cb.equal(from.get("codigo"), codigoDir3)); 
     cq.orderBy(cb.asc(from.get("codigo"))); 

     // obtener los datos 
     TypedQuery<Oficina> ctq = getEntityManager().createQuery(cq); 
     Oficina oficina = ctq.getSingleResult(); 
     return oficina; 
    }catch(Exception ex){ 
     LOGGER.error("Clase: OficinaJpaDao, Metodo: find(" + codigoDir3 + "), Error:" + ex.getMessage() + " " + ex.getCause()); 
     return null; 
    } 
} 

SERVICE с @Service и @Transactional

@Override 
public List<UnidadOrganicaDTO> getUnidadesOrganicas(String filtro){ 
    List<UnidadOrganica> unidadesOrganicas = new ArrayList<UnidadOrganica>(); 
    List<UnidadOrganicaDTO> unidadesOrganicasDto = new ArrayList<UnidadOrganicaDTO>(); 
    try{ 
     unidadesOrganicas = unidadOrganicaDao.findAll(filtro); 
     for(UnidadOrganica uo: unidadesOrganicas){ 
      unidadesOrganicasDto.add(utils.uoentityToDto(uo)); 
     } 
    }catch(Exception ex){ 
     log.error("AMAPDir3ServiceImpl.getUnidadesOrganicas("+filtro+"): " + ex.getMessage()); 
    } 
    return unidadesOrganicasDto; 
} 

успокоительных

@GET 
@Produces("application/json") 
@Path("/getOficina/{codigoDir3}") 
public String getOficina(
    @HeaderParam("Authorization") String authorization, 
    @PathParam("codigoDir3") @DefaultValue("") String codigoDir3) { 

    String jsonString; 

    try{ 

     jsonString = toJSON(servicio.getOficina(codigoDir3)); 

     AuditarServicio(authorization,"AMAPGENERICOS.getOficina"); 

    }catch(Exception ex){ 
     // registrar el error y devolver vacio 
     logger.error("Dir3RestfulImpl.getOficina("+codigoDir3+"): " + ex.getLocalizedMessage()); 
     jsonString = JSON_EMPTY; 
    } 

    return jsonString; 
} 

У объекта Oficina есть ваши атрибуты с @ManyToOne (fetch = FetchType.LAZY) И i п ApplicationContext:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

Служба развертывание купить, когда я делаю советоваться, она возвращает ошибку не удался инициализировать прокси-сервера - нет сессии (через эталонную цепь: Спасибо за вашу помощь

ERROR [Dir3RestfulImpl] Dir3RestfulImpl.getOficina(): could not initialize proxy - no Session (through reference chain: es.gobcantabria.amap.dir3.servidor.business.dto.OficinaDTO["ccaa"]->es.gobcantabria.amap.dir3.servidor.business.domain.Ccaa_$$_jvstba4_c["codIne"]) 

ответ

0

Где Исключение исходит? Не могли бы вы опубликовать stacktrace, пожалуйста?

Возможно, вы получаете доступ к ленивому свойству из слоя REST, который терпит неудачу, так как транзакция (и сеанс Hibernate) завершена/закрыта.

Любой доступ к постоянному объекту должен быть выполнен с уровня обслуживания (это означает, что инициализация ленивых коллекций). Уровень REST должен работать только с отдельными объектами, причем все загруженные данные уже загружены.

Смежные вопросы