Eu estou começando em Java, e como estou pesquisando sobre Arraylist e estou precisando de um help.
Estou tendo o seguinte problema, este é o cenário.
[code]public class Empresa implements Serializable {
/** Id da empresa */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "EMPRESA_ID")
private Long id;
/** Classe dos Contatos Comerciais */
@Embedded
private List<ContatoComercial> contatoComercial;
@Embedded
private List<PerfilVaga> perfilVagas;
//Getters and Setters[/code]
Eu tenho uma Servlet que vai fazer a inserção destes dados.
Mas como é uma List, estou tento esse erro ao fazer isso: ( um pedaço simplificado do código )
[code]ContatoComercial comercial = new ContatoComercial();
comercial.setNome(request.getParameter(“nomeComercial”));
comercial.setCargo(request.getParameter(“cargoComercial”));
comercial.setDepartamento(request.getParameter(“departamentoComercial”));
comercial.setEmail(request.getParameter(“emailComercial”));
List listaComercial = new ArrayList();
listaComercial.add(comercial);
Empresa empresa = new Empresa
empresa.setContatoComercial(listaComercial);
empresaManager.save(empresa);[/code]
Quando tento salvar, recebo essa mensagem.
O motivo que andei pesquisando é que não posso instanciar uma classe abstract ou uma interface, que é caso do List ou Collection.
Já tentei usar também o LinkedList, mas não funcionou .
Gostaria de saber se alguém poderia me ajudar com este problema.
org.springframework.orm.hibernate3.HibernateSystemException: Cannot instantiate abstract class or interface: java.util.List; nested exception is org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: java.util.List
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.merge(HibernateTemplate.java:833)
at br.com.vetoreditora.psiconline.dao.hibernate.GenericDaoHibernate.save(GenericDaoHibernate.java:174)
at br.com.vetoreditora.psiconline.service.impl.GenericManagerImpl.save(GenericManagerImpl.java:82)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy23.save(Unknown Source)
at br.com.vetoreditora.psiconline.web.EmpresaServlet.doPost(EmpresaServlet.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: java.util.List
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:78)
at org.hibernate.tuple.component.AbstractComponentTuplizer.instantiate(AbstractComponentTuplizer.java:89)
at org.hibernate.type.ComponentType.instantiate(ComponentType.java:482)
at org.hibernate.type.ComponentType.instantiate(ComponentType.java:488)
at org.hibernate.type.ComponentType.replace(ComponentType.java:459)
at org.hibernate.type.TypeFactory.replace(TypeFactory.java:515)
at org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:377)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:179)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:123)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:677)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661)
at org.springframework.orm.hibernate3.HibernateTemplate$24.doInHibernate(HibernateTemplate.java:836)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
... 34 more
Entao, para evitar nullpointer faca sua lista ser iniciada assim que o seu bean for instanciado e voce pode criar um metodo para adicionar novos contatos a sua lista de contatos.
Exemplo:
[code]public class Empresa {
private List contatos = new ArrayList();