Fórum Erro LazyInitializationException em propriedade EAGER (isso mesmo!!!) #398033
25/03/2011
0
Estou usando o JSF 2.0(mojarra 2.0.4) + Primefaces + Spring 3.0.5 + Hibernate 3.6 com
este modelo abaixo, eu faço
esse mapeamento, e mesmo colocando o @Any como EAGER dá uma
LazyInitializationExeception mesmo se o meu MBean for de escopo Session, eu já
até coloquei o filtro OpenSessionInView do Spring e dá no mesmo.
Obs: tenho uma página com um DataTable(e selection single do primefaces), quando o usuário clica no registro
ele seta o obj selecionado em um objeto do MBean, e ao clicar em Editar ele abre
outra página para editar o registro setado, e nesta hora que dá o LIE.
Poderia me ajudar ? abaixo parte do código.
-------------------------------------
-------------------------------------------------------
este modelo abaixo, eu faço
esse mapeamento, e mesmo colocando o @Any como EAGER dá uma
LazyInitializationExeception mesmo se o meu MBean for de escopo Session, eu já
até coloquei o filtro OpenSessionInView do Spring e dá no mesmo.
Obs: tenho uma página com um DataTable(e selection single do primefaces), quando o usuário clica no registro
ele seta o obj selecionado em um objeto do MBean, e ao clicar em Editar ele abre
outra página para editar o registro setado, e nesta hora que dá o LIE.
Poderia me ajudar ? abaixo parte do código.
@Entity
public class Pessoa implements Serializable {
private static final long serialVersionUID =
3400394713317764808L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo;
@Column(length = 50)
private String nome;
private ClassePessoa classe;
@Enumerated(EnumType.STRING)
private TipoPessoa tipoPessoa;
@Any(metaColumn = @Column(name = "tipo_dados"))
@AnyMetaDef(idType = "long", metaType = "string", metaValues = {
@MetaValue(value = "FISICA", targetEntity =
DadosPessoaFisica.class),
@MetaValue(value = "JURIDICA", targetEntity =
DadosPessoaJuridica.class)})
@JoinColumn(name = "codigo_dados")
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Dados dados;
-------------------------------------
public interface Dados extends Serializable{}
--------------------------------------
[code]@Entity
public class DadosPessoaFisica implements Dados, Serializable{
private static final long serialVersionUID =
3230268695240296033L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long codigo;
@Column(length=20)
private String rg;
@Column(length=10)
private String orgaoExpedidor;
@Temporal(TemporalType.DATE)
private Date dataExpedicao;
@Column(length=14)
private String cpf;
@Temporal(TemporalType.DATE)
private Date dataNascimento;
@Enumerated(EnumType.STRING)
private EstadoCivil estadoCivil;
@Column(length=50)
private String naturalidade;
@Column(length=50)
private String nomePai;
@Column(length=50)
private String nomeMae;
@Column(length=50)
private String localTrabalho;
@Column(length=50)
private String nomeConjugue;-------------------------------------------------------
@Repository("pessoaDAO")
@Scope("singleton")
@Transactional(readOnly=true)
public class PessoaDAOImpl extends HibernateDaoSupport implements PessoaDAO
{
private static final long serialVersionUID =
8668800837955656728L;
@Autowired
public PessoaDAOImpl(SessionFactory sessionFactory) {
setSessionFactory(sessionFactory);
}
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=false)
public void store(Pessoa object) {
try {
getHibernateTemplate().saveOrUpdate(object);
} catch (Exception e) {
e.printStackTrace();
throw new DAOServiceException("Erro ao tentar gravar : " +
object + ", " + e.getMessage());
}
}
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=false)
public void remove(Pessoa object) {
try {
getHibernateTemplate().delete(object);
} catch (Exception e) {
e.printStackTrace();
throw new DAOServiceException("Erro ao tentar apagar : " +
object + ", " + e.getMessage());
}
}
@Override
public Pessoa findByPrimaryKey(Long pk) {
Pessoa p;
try {
p = getHibernateTemplate().get(Pessoa.class, pk);
} catch (Exception e) {
throw new DAOServiceException(
"Erro ao tentar localizar " + this.getClass().getName()
+ " pela pk : " + pk, e);
}
return p;
}
@Override
public List<Pessoa> loadAll() {
List<Pessoa> lista = null;
try {
lista =
(List<Pessoa>)getHibernateTemplate().loadAll(Pessoa.class);
} catch (Exception e) {
throw new DAOServiceException(
"Erro ao tentar retornar todos os registros de " +
this.getClass().getName() + ".", e);
}
return lista;
}
@Override
public Set<Pessoa> loadAll2() {
return (Set<Pessoa>)
getHibernateTemplate().loadAll(Pessoa.class);
}
}
Pedro Andrade
Curtir tópico
+ 0
Responder
Posts
25/03/2011
Dyego Carmo
Poderia colar o erro com stack completo aqui ?
Seu exemplo do fonte nao tem EAGER marcado...
Seu exemplo do fonte nao tem EAGER marcado...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)