Cannot instantiate abstract class or interface: java.util.List

E ae, galera

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.

Muito obrigado desde já

Coloca o stack aqui pra ver o erro direitinho

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();

public void addContatoComercial( ContatoComercial contato ) {  
    this.contatos.add( contato );  
}  

}
[/code]

PS: A anotacao de relacionamento das lista parece estar errada.
Da uma pesquisada em @OneToOne, @OneToMany, @ManyToOne e @ManyToMany

[]'s