Dúvida de MAPEAMENTO!

4 respostas
jonatha.chaves

Bem como o que estava não teve sugestões resolvi expressar diferente.

tenho essas duas classes Pedido e ProdutosPedido:

public class Pedido implements Serializable {
	@Id
	@GeneratedValue
	@Column(name="id_pedido")
	private int idPedido;

	@Column(name="observacao_pedido")
	private String observacaoPedido;

	@Column(name="ativo_pedido")
	private String ativoPedido;

	@Column(name="data_pedido")
	private String dataPedido;

	@ManyToOne
	@JoinColumn(name="fornecedor_id_fornecedor")
	private Fornecedor fornecedor;
	
	@Column(name="status_conferencia_pedido")
	private String statusConferenciaPedido;

        @OneToOne(cascade = {CascadeType.ALL})
	@JoinColumn(name="usuario_altera_pedido_id_usuario_altera_pedido")
	private UsuarioAlteraPedido usuarioAlteraPedido;

	@OneToMany(mappedBy = "pedido")
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<ProdutosPedido> produtosPedidoCollection;

public class ProdutosPedido implements Serializable {
	@Id
	@GeneratedValue
	@Column(name="id_produtos_pedido")
	private Long idProdutosPedido;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "produto_id_produto")	
	private Produto produto;

	@ManyToOne
	@JoinColumn(name = "pedido_id_pedido")
	private Pedido pedido;

	@Column(name="qtd_produto")
	private int qtdProduto;

	@Column(name="vlr_uni_produto")
	private BigDecimal vlrUniProduto;

	@Column(name="desconto_produto")
	private String descontoProduto;
	
	@Column(name="status_produto")
	private String statusProduto;

Estas duas partes do código dessas duas classes:

@OneToMany(mappedBy = "pedido")
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<ProdutosPedido> produtosPedidoCollection;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "produto_id_produto")	
	private Produto produto;

Bem, se eu faço a consulta do tipo “select * from Pedido p” ele traz todos os dados ignorando o LAZY devido a isso " @LazyCollection(LazyCollectionOption.FALSE)" carregando o que não quero . Se tiro essa annotation “@LazyCollection(LazyCollectionOption.FALSE)” eu tenho este erro:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
	at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
	at org.hibernate.LazyInitializationException.<init>(LazyInitializationException.java:42)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
	at org.hibernate.collection.PersistentBag.get(PersistentBag.java:445)
	at br.com.lares.controller.ControllerPedido.findPedido(ControllerPedido.java:135)
	at br.com.lares.viewer.pedido.FormRegisterPedido.jButtonFindActionPerformed(FormRegisterPedido.java:802)
	at br.com.lares.viewer.pedido.FormRegisterPedido.access$300(FormRegisterPedido.java:38)
	at br.com.lares.viewer.pedido.FormRegisterPedido$7.actionPerformed(FormRegisterPedido.java:423)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 37 more

Alguém tem alguma solução pra que eu carregue os dados e não busque o que esta marcado com LAZY?

4 Respostas

Jo_Ant_io

Olá !

já tentou?

Jo_Ant_io

Desculpa!

jonatha.chaves

Como havia dito que sem essa annotaion ou com ela setada com TRUE me devolve essa exception:

13/01/2010 18:12:10 Wed Jan 13 18:12:10 BRST 2010
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
	at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
	at org.hibernate.LazyInitializationException.<init>(LazyInitializationException.java:42)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
	at org.hibernate.collection.PersistentBag.get(PersistentBag.java:445)
	at br.com.lares.controller.ControllerPedido.findPedido(ControllerPedido.java:135)
	at br.com.lares.viewer.pedido.FormRegisterPedido.jButtonFindActionPerformed(FormRegisterPedido.java:802)
	at br.com.lares.viewer.pedido.FormRegisterPedido.access$300(FormRegisterPedido.java:38)
	at br.com.lares.viewer.pedido.FormRegisterPedido$7.actionPerformed(FormRegisterPedido.java:423)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 37 more
B

java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Pode ser algum jar que não foi encontrado no seu classpath…

Dá uma olhada:
http://www.findjar.com/index.x?query=org%2Fslf4j%2Fimpl%2FStaticLoggerBinder

Criado 5 de janeiro de 2010
Ultima resposta 14 de jan. de 2010
Respostas 4
Participantes 3