ArrayList com Hibernate

2 respostas
L

Pessoal

Estou tentando gravar um uma lista no BD com o hibernate:

//Funcao para inserir lista de UO no banco
	public boolean insertlist(ArrayList<UsuarioxUo> arrayGrvUo){
		
		boolean lretfun = true;
		Session session = HibernateUtil.getSession();      
		Transaction tx = session.beginTransaction();      
		try {   
			session.save(arrayGrvUo);        
			tx.commit(); 
			session.close();  
		} catch (Exception e) { 
			e.printStackTrace();
			session.getTransaction().rollback();  
			lretfun = false;
		} 
		return lretfun;       

	}

- O objeto está vindo corretamente, ou seja, com as informações que preciso gravar.
- Ja mapiei a classe no hibernate.cfg.xml

O erro que está ocorrendo é este:

org.hibernate.MappingException: Unknown entity: java.util.ArrayList
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:580)
	at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1365)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
	at br.com.cd.insert.Insert.insertlist(Insert.java:88)
	at br.com.cd.insert.Insert.insertusu(Insert.java:71)
	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 flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
	at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
	at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
	at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
	at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
	at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
	at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
	at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
	at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
	at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
	at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)

Alguém sabe me dizer o motivo?

Obrigado

2 Respostas

Hebert_Coelho

Hibernate não salva lista, apenas classes mapeadas com @Entity.

Veja que a própria mensagem de erro diz que ele tenta entender ArrayList como se fosse uma Entity:
org.hibernate.MappingException: Unknown entity: java.util.ArrayList

MarkKnopfler

O que vc tem de fazer é marcar a suaclasse UsuarioxUo como @Entity, da forma que nosso amigo aí acima falou. Dê uma googlada sobre isso para aprender como.
Depois, na sua rotina, vc vai fazer manualmente o loop pelo array:

for (UsuarioxUo u: arrayGrvUo) { session.save(u); }

Criado 18 de novembro de 2012
Ultima resposta 18 de nov. de 2012
Respostas 2
Participantes 3