JPA preguiçoso de carga não está funcionando na inicialização da Primavera

Houssem Badri:

Eu pesquisei muito e É realmente bizarro que a Primavera de inicialização (versão mais recente) pode não ter o carregamento lento não está funcionando. Abaixo estão pedaços do meu código:

Meu recurso:

 public ResponseEntity<Page<AirWaybill>> searchAirWaybill(CriteraDto criteriaDto, @PageableDefault(size = 10) Pageable pageable{
airWaybillService.searchAirWaybill(criteriaDto, pageable);
        return ResponseEntity.ok().body(result);
}

Meu serviço:

@Service
@Transactional
public class AirWaybillService {

//Methods

 public Page<AirWaybill> searchAirWaybill(AirWaybillCriteriaDto searchCriteria, Pageable pageable){
    //Construct the specification
            return airWaybillRepository.findAll(spec, pageable);
   }
}

Meu Entidade:

@Entity
@Table(name = "TRACKING_AIR_WAYBILL")
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@airWaybillId") //to fix Infinite recursion with LoadedAirWaybill class
public class AirWaybill{
//Some attributes
    @NotNull
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "FK_TRACKING_CORPORATE_BRANCH_ID")
    private CorporateBranch corporateBranch;
}

E quando a depuração, eu ainda obter todas preguiçoso carregado atribuiu carregado. Veja a imagem abaixo.

digite descrição da imagem aqui

Uma das minhas perguntas é poderiam Jackson estar envolvido em tal comportamento? Existe alguma maneira que eu possa ter perdido para ativar o carregamento lento?

EDITAR

Outra questão, poderia o depurador estar envolvido em arruinar o carregamento lento?

EDIT 2:

Para especificação de construção, eu tenho:

public static Specification<AirWaybill> isBranchAirWayBill(long id){
    return new Specification<AirWaybill>() {
        @Override
        public Predicate toPredicate(Root<AirWaybill> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            return cb.equal(root.join("corporateBranch",JoinType.LEFT).get("id"),id);
        }
    };
}
Thomas Białecki:

Hibernação Sessão existe dentro de método com @Transactional. Passando entidade externa Classe de serviço é uma prática ruim porque sessão está sendo fechado depois de deixar o seu searchmétodo. Por outro lado a sua entidade contém preguiçosos coleções inicializados, que não pode ser puxado uma vez sessão é fechada.

A boa prática é mapear entidade para objeto de transporte e devolver esses objectos de transporte de serviço (não entidades matérias).

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=177458&siteId=1
Recomendado
Clasificación