1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

org.hibernate.LazyInitializationException

em uma entidade:

@Entity
@Table(name = "tb_vei_veiculo")
public class Veiculo extends BaseBean implements Serializable {

    private static final long serialVersionUID = -3318174337628101719L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Integer vei_id;
    @OneToOne
    @JoinColumn(name = "mod_id")
    private Modelo modelo;
    private String vei_placa;
    private String vei_chassi;
    private String vei_renavam;
    private Integer mun_id;
    private String vei_cor;
    private Integer vei_potencia;
    private Integer vei_cilindrada;
    private Integer vei_capacidade;
    private Integer vei_ano_modelo;
    private Integer vei_ano_fabricacao;
    private Date vei_data_aquisicao;
    private Integer vei_mes_licenciamento;
    private Integer vei_ultimo_licenciamento;
    private BigDecimal vei_km_inicial = BigDecimal.ZERO;
    private BigDecimal vei_capacidade_lt;
    private BigDecimal vei_capacidade_m3;
    private BigDecimal vei_consumo_litrokm;
    private BigDecimal vei_consumo_litrohora;
    private String vei_estado = "O";
    private String vei_situacao = "A";
    private boolean vei_calc_ab_consumo;
    private boolean vei_calc_ab_horas;
    private String vei_habilitacao;

    **@OneToMany(fetch=FetchType.LAZY)
    @JoinTable(name = "tb_acv_acessorio_veiculo", joinColumns = { @JoinColumn(name = "vei_id") }, inverseJoinColumns = { @JoinColumn(name = "ace_id") })
    private List<Acessorio> lstAcessorio;
    @OneToMany
    @JoinTable(name = "tb_cov_combustivel_veiculo", joinColumns = { @JoinColumn(name = "vei_id") }, inverseJoinColumns = { @JoinColumn(name = "com_id") })
    private List<Combustivel> lstCombustivel;**

do outro lado está assim para Acessorio e Combustivel:


@Entity
@Table(name = "tb_ace_acessorio")
public class Acessorio extends BaseBean implements Serializable {

    private static final long serialVersionUID = -6710883420168060412L;

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Integer ace_id;
    private String ace_descricao;

meu VeiculoTeste:

public class VeiculoTeste {
    private static final Logger LOGGER = Logger.getLogger(VeiculoTeste.class);

    private VeiculoDao veiculoDao = DaoFactory.veiculoDaoInstance();

    @Test
    public void testFindAll() {
        Veiculo veiculo = this.veiculoDao.findById(1);
        LOGGER.info(veiculo);
    }

}

apresenta o seguinte erro no console:

Hibernate: 
    select
        veiculo0_.vei_id as vei_id1_12_0_,
        veiculo0_.mod_id as mod_id25_12_0_,
        veiculo0_.mun_id as mun_id2_12_0_,
        veiculo0_.vei_ano_fabricacao as vei_ano_3_12_0_,
        veiculo0_.vei_ano_modelo as vei_ano_4_12_0_,
        veiculo0_.vei_calc_ab_consumo as vei_calc5_12_0_,
        veiculo0_.vei_calc_ab_horas as vei_calc6_12_0_,
        veiculo0_.vei_capacidade as vei_capa7_12_0_,
        veiculo0_.vei_capacidade_lt as vei_capa8_12_0_,
        veiculo0_.vei_capacidade_m3 as vei_capa9_12_0_,
        veiculo0_.vei_chassi as vei_cha10_12_0_,
        veiculo0_.vei_cilindrada as vei_cil11_12_0_,
        veiculo0_.vei_consumo_litrohora as vei_con12_12_0_,
        veiculo0_.vei_consumo_litrokm as vei_con13_12_0_,
        veiculo0_.vei_cor as vei_cor14_12_0_,
        veiculo0_.vei_data_aquisicao as vei_dat15_12_0_,
        veiculo0_.vei_estado as vei_est16_12_0_,
        veiculo0_.vei_habilitacao as vei_hab17_12_0_,
        veiculo0_.vei_km_inicial as vei_km_18_12_0_,
        veiculo0_.vei_mes_licenciamento as vei_mes19_12_0_,
        veiculo0_.vei_placa as vei_pla20_12_0_,
        veiculo0_.vei_potencia as vei_pot21_12_0_,
        veiculo0_.vei_renavam as vei_ren22_12_0_,
        veiculo0_.vei_situacao as vei_sit23_12_0_,
        veiculo0_.vei_ultimo_licenciamento as vei_ult24_12_0_,
        modelo1_.mod_id as mod_id1_10_1_,
        modelo1_.mar_id as mar_id3_10_1_,
        modelo1_.mod_descricao as mod_desc2_10_1_,
        marca2_.mar_id as mar_id1_9_2_,
        marca2_.mar_descricao as mar_desc2_9_2_,
        marca2_.tip_id as tip_id3_9_2_,
        tipo3_.tip_id as tip_id1_11_3_,
        tipo3_.tip_descricao as tip_desc2_11_3_ 
    from
        "JFC_Locadora".tb_vei_veiculo veiculo0_ 
    left outer join
        "JFC_Locadora".tb_mod_modelo modelo1_ 
            on veiculo0_.mod_id=modelo1_.mod_id 
    left outer join
        "JFC_Locadora".tb_mar_marca marca2_ 
            on modelo1_.mar_id=marca2_.mar_id 
    left outer join
        "JFC_Locadora".tb_tip_tipo tipo3_ 
            on marca2_.tip_id=tipo3_.tip_id 
    where
        veiculo0_.vei_id=?
**27-01-2015 21:05:27,447; [main]; INFO ; net.websoftwares.testes.daos.VeiculoTeste;  - org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: net.websoftwares.entidades.Veiculo.lstAcessorio, could not initialize proxy - no Session**

se eu modificar de LAZY para EAGGER ele fuciona numa boa, mas quero que ao chamar VEICULO ele traga tudo sem dar o erro de lazyException

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags lazy hibernate jpa persistência ou faça a sua própria pergunta.