Problemas com JPA

E ai galera do fórum, estou com um problema na hora de conseguir retirar os dados do banco de dados. Estou utilizando MySQL e JPA2.0 com hibernate4

Tenho uma tabela que representa um objeto

@Entity
@Table(name="cesta")
public class Cesta implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int idCesta;

    @Lob()
	@Column(nullable=false)
	private String descricao;

	@Column(nullable=false, length=45)
	private String identificador;

	@Column(nullable=false, length=45)
	private String idioma;

	@Column(nullable=false, length=50)
	private String nome;

    @Lob()
	@Column(nullable=false)
	private String palavraChave;

    @Lob()
	@Column(nullable=false)
	private String url;

	//bi-directional many-to-one association to Alunocesta
	@OneToMany(mappedBy="cesta")
	private List<Alunocesta> alunocestas;

	//bi-directional many-to-one association to Categoriadireito
	@OneToMany(mappedBy="cesta")
	private List<Categoriadireito> categoriadireitos;

	//bi-directional many-to-one association to Categoriaeducacional
	@OneToMany(mappedBy="cesta")
	private List<Categoriaeducacional> categoriaeducacionals;

	//bi-directional many-to-one association to Categoriatecnica
	@OneToMany(mappedBy="cesta")
	private List<Categoriatecnica> categoriatecnicas;

	//bi-directional many-to-one association to Categoriavida
	@OneToMany(mappedBy="cesta")
	private List<Categoriavida> categoriavidas;

	//bi-directional many-to-one association to Cestacha
	@OneToMany(mappedBy="cesta")
	private List<Cestacha> cestachas;

	//bi-directional many-to-one association to Recomendado
	@OneToMany(mappedBy="cesta")
	private List<Recomendado> recomendados;

    public Cesta() {
    }

	public int getIdCesta() {
		return this.idCesta;
	}

	public void setIdCesta(int idCesta) {
		this.idCesta = idCesta;
	}
   // GETTERS E SETTERS
}

E tenho a tabela com outros atributos ligados a essa tabela atraves de uma chave

@Entity
@Table(name="cestacha")
public class Cestacha implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int idCestaCha;

	@Column(nullable=false, length=45)
	private String atitude;

	@Column(nullable=false, length=45)
	private String conhecimento;

	@Column(nullable=false, length=45)
	private String habilidade;

	@Column(nullable=false, length=45)
	private String nomeCompetencia;

	//bi-directional many-to-one association to Cesta
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="Cesta_idCesta", nullable=false)  
	private Cesta cesta;     // AQUI EU NAO CONSIGO RECUPERAR O ID 

    public Cestacha() {
    }

	public int getIdCestaCha() {
		return this.idCestaCha;
	}

	public void setIdCestaCha(int idCestaCha) {
		this.idCestaCha = idCestaCha;
	}

	public String getAtitude() {
		return this.atitude;
	}

	public void setAtitude(String atitude) {
		this.atitude = atitude;
	}

	public String getConhecimento() {
		return this.conhecimento;
	}

	public void setConhecimento(String conhecimento) {
		this.conhecimento = conhecimento;
	}

	public String getHabilidade() {
		return this.habilidade;
	}

	public void setHabilidade(String habilidade) {
		this.habilidade = habilidade;
	}

	public String getNomeCompetencia() {
		return this.nomeCompetencia;
	}

	public void setNomeCompetencia(String nomeCompetencia) {
		this.nomeCompetencia = nomeCompetencia;
	}

	public Cesta getCesta() {
		return this.cesta;
	}

	public void setCesta(Cesta cesta) {
		this.cesta = cesta;
	}
	
}

Durante a execução do programa necessito carregar a tabela “cestacha”, até ai tudo bem, mas logo necessito recuperar o objeto cesta, o qual a tabela cesta faz referencia e nao consigo, ele acusa o seguinte erro

Exception in thread "main" org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.event.service.spi.EventListenerRegistry]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126)
	at org.hibernate.internal.SessionImpl.eventListenerGroup(SessionImpl.java:624)
	at org.hibernate.internal.SessionImpl.listeners(SessionImpl.java:620)
	at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:953)
	at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:891)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:158)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:195)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
	at entidade.Cesta_$$_javassist_5.getIdCesta(Cesta_$$_javassist_5.java)
	at teste.Main.main(Main.java:137)

alguem saberia o que esta acontecendo???

pow gente, eu estou com o mesmo problema, alguem ajuda ai

:cry: :cry: :cry: :cry: :cry: :cry:

Vc nao postou o codigo que gera o erro.

O problema tá relacionado com a recuperação tardia (lazy ta true).

Mas é preciso ver o código que gera o erro.

[quote=matheus_paulo93]pow gente, eu estou com o mesmo problema, alguem ajuda ai

:cry: :cry: :cry: :cry: :cry: :cry: [/quote]

Faz tempo que postei este problema e nem me lembrava mais deste post, mas consegui resolvê-lo e o problema é mesmo o que o lsouza13 falou carregamento lazy.

Para evitar que isto ocorra, é preciso ter cuidado com os relacionamentos um-para-muitos, por default, o hibernate considera eles lazy, ou seja, ele não os carrega automaticamente. Por exemplo, se vc tem uma tabela usuario e uma tabela telefone e um usuario tem muitos telefones. Se vc der um find, ele carregará todos atributos do usuario e relacionamentos um-para-um, todavia não carregará a lista de telefones. Logo quando vc acessar a lista de telefones, e a sessão estiver fechada, irá ocorrer o famoso LIE - LazyException.

Para que vc evite o LazyException, vc pode fazer uma query e carregar todos dados usando um inner join, por exemplo.

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Ou durante a transação,antes de fechar o entityManager, vc acessa os dados da lista do telefone, ou seja, dá um find no usuario e depois faz usuario.getTelefones, assim ele seta os valores da lista de telefones e vc pode acessá-los.

Espero ter ajudado e qualquer coisa estamos ai. valeu!!!

[]s

Valeu ATEN.

matheus_paulo93 , se não conseguir resolver, e quiser postar seu código, tentamos resolver juntos.

Abraços

Obrigado por se dispor a me ajudar Isouza13, eu ja to rancando os cabelos da cabeça, rsrsrsrsrs

O meu problema pode ser resolvido implementando o padrão Open Session in View, pois estou tentando acessar objeto que está em javassist depois que a sessão é fechada, ja achei varios tutoriais na net para fazer essa implementação, mas é complicado, eu sou inexperiente ainda, por favor me ajude.

Estou usando Hibernate 4, então eu não tenho um arquivo .cfg, eu uso o persistence.xml, e os tutoriais que achei usam o cfg.

vou postar o codigo

Classe Entidade:

@Entity
@Table(name = "t1000")
@Proxy(lazy = true)
public class T1000 extends DAO{
	/**  */
	private static final long serialVersionUID = -4210114976753629982L;

	@Id
	private Integer c100001;

	private String c100002;

	private String c100003;

	@Temporal(TemporalType.DATE)
	private Date c100005;

	// bi-directional many-to-one association to T700
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "c100004")
	private T700 c100004;

	public T1000() {
	}

	public Integer getC100001() {
		return this.c100001;
	}

	public void setC100001(Integer c100001) {
		this.c100001 = c100001;
	}

	public String getC100002() {
		return this.c100002;
	}

	public void setC100002(String c100002) {
		this.c100002 = c100002;
	}

	public String getC100003() {
		return this.c100003;
	}

	public void setC100003(String c100003) {
		this.c100003 = c100003;
	}

	public Date getC100005() {
		return this.c100005;
	}

	public void setC100005(Date c100005) {
		this.c100005 = c100005;
	}

	public T700 getC100004() {
		return c100004;
	}

	public void setC100004(T700 c100004) {
		this.c100004 = c100004;
	}

}

e esse é o erro, depois que pesquiso o objeto, eu tenho que add em uma lista e exibir em um datatable na tela, mas nesse momento a sessão ja foi fechada.

javax.el.ELException: /jsf/testes/teste.xhtml @52,52 value="#{item.c100004.c70002}": Error reading 'c70002' on type br.com.CanilKrusemark.dao.T700_$$_javassist_24
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:808)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:773)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:651)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:234)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:196)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:169)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.event.service.spi.EventListenerRegistry]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126)
	at org.hibernate.internal.SessionImpl.eventListenerGroup(SessionImpl.java:736)
	at org.hibernate.internal.SessionImpl.listeners(SessionImpl.java:732)
	at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1076)
	at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:992)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:173)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:285)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
	at br.com.CanilKrusemark.dao.T700_$$_javassist_24.getC70002(T700_$$_javassist_24.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	... 51 more

Mar 17, 2013 12:37:55 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/CanilKrusemark] threw exception [Unknown service requested [org.hibernate.event.service.spi.EventListenerRegistry]] with root cause
org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.event.service.spi.EventListenerRegistry]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126)
	at org.hibernate.internal.SessionImpl.eventListenerGroup(SessionImpl.java:736)
	at org.hibernate.internal.SessionImpl.listeners(SessionImpl.java:732)
	at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1076)
	at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:992)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:173)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:285)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
	at br.com.CanilKrusemark.dao.T700_$$_javassist_24.getC70002(T700_$$_javassist_24.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:808)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:773)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:651)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:234)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:196)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:169)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

mais uma vez obrigado por estar me ajudando :smiley: :smiley: