Duvida Hibernate

3 respostas
javaspringhibernate
fabioebner

Pessoal existe uma forma de eu eliminar o problema de lazy load? eu quero manter a referencia na minha entity, porem se por algum motivo tentar acessar a minha lista, ele retornar null, exemplo:

tenho a seguinte entity:

@Entity
@Table(name= "tabelaA")
public class TabelaA {
   @Id 
private Long id;

@OneToMany(mappedBy="codigo")
    @Fetch(FetchMode.SELECT)
    private List<TabelaB> tabelasBList; 
}

@Entity
@Table(name= "tabelaB")
public class TabelaB {
...
}

Hoje se eu fizer um select na TabelaA e tentar acessar a tabelaB ele me retorna um lazyload, queria que se de alguma forma tentar acessar a lista de tabelaB retorne null, tipo uma anotacao ou coisa assim, quero manter a referencia para fazer os selects e tudo mais… mas nao quero ter que me preocupar com o lazzy (e nem quero trazer a lista de tabelaB)

Obs. Uso SpringBoot

nao sei se fui claro :smiley: obrigado

3 Respostas

javaflex

Não entendi. Pelo código que você postou está mapeado como SELECT e não Lazy. Na verdade não é o lazy que você precisa?

fabioebner

Então o problema e que eu estou usando um cara no meu front (vaadin) que gera as colunas do grid automaticamente, e se eu pegar todos os dados da tabelaA quando mando gerar o grid ele vai dar erro de lazyload na lista de tabelasB, (nao vai ter a session) entao eu nao queria controlar isso pq a ideia e sempre que eu precisar pegar a tabelaB eu vou ter que ir buscar na mao, entao queria saber se existe alguma annotations que eu continue com o objeto la (List, porem em qualquer lugar da minha aplicaao se eu tentar dar um tabela.getTabelaBList() ele sempre me retornaria null, e eu teria que buscar na mao as tabelasB para utilizar.

javaflex

Você ainda não deixou claro aqui postando seu mapeamento com lazy. Se está usando lazy, então não toque na lista mapeada com lazy enquanto você não precisar dessa informação.

Sobre a questão de não ter session, Vaadin é component server? Se for, uma saída é você seguir o que chamam de “open session in view” (https://developer.jboss.org/wiki/OpenSessionInView), assim a session vai ficar aberta até o final do processamento do component server.

Criado 6 de dezembro de 2016
Ultima resposta 6 de dez. de 2016
Respostas 3
Participantes 2