Ola pessoal, estou tendo alguns problemas quando tendo jogar um array no meu banco de dados. Eu tenho uma classe Mensagem que possui um array de um objetos Anexos[].
No banco de dados, eu tenho uma tabela mensagem e uma tabela anexos com a chave estrangeira apontando pra mensagens, acredito que seja um relacionamento de um pra muitos.
minha classe Mensagem:
public class MensagemVO {
private String usuario, para, cc, bcc, mensagem, assunto, enviada;
private AnexoVO[] anexos;
private int msgId, isOn;
public int getMsgId() {
return msgId;
}
public void setMsgId(int msgId) {
this.msgId = msgId;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getPara() {
return para;
}
public void setPara(String para) {
this.para = para;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
public String getBcc() {
return bcc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public String getAssunto() {
return assunto;
}
public void setAssunto(String assunto) {
this.assunto = assunto;
}
public String getEnviada() {
return enviada;
}
public void setEnviada(String enviada) {
this.enviada = enviada;
}
public int getIsOn() {
return isOn;
}
public void setIsOn(int isOn) {
this.isOn = isOn;
}
public AnexoVO[] getAnexos() {
return anexos;
}
public void setAnexos(AnexoVO[] anexos) {
this.anexos = anexos;
}
}
e meu xml mapeando esta classe:
<hibernate-mapping>
<class name="br.com.feu.vo.MensagemVO" table="mensagem">
<id column="msgId" name="msgId" type="integer" unsaved-value="null">
<generator class="increment"/>
</id>
<property name="usuario" type="string"/>
<property name="para" type="string"/>
<property name="cc" type="string"/>
<property name="bcc" type="string"/>
<property name="mensagem" type="string"/>
<property name="assunto" type="string"/>
<property name="enviada" type="string"/>
<property name="isOn" type="integer"/>
<primitive-arrayarray name="anexos" table="anexos" cascade="all">
<key column="idAnexos" foreign-key="msgId"/>
<one-to-many class="br.com.feu.vo.AnexoVO" />
</primitive-arrayarray>
</class>
</hibernate-mapping>
sempre que eu tento gravar no banco recebo o seguinte erro:
INFO: Reading mappings from resource : message.hbm.xml
31/10/2008 21:31:03 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(19) The content of element type "array" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?)".
31/10/2008 21:31:03 com.sun.faces.application.ActionListenerImpl processAction
SEVERE: java.lang.ExceptionInInitializerError
javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:346)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
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: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(Thread.java:619)
Caused by: java.lang.ExceptionInInitializerError
at br.com.feu.util.ConnectionFactory.<clinit>(ConnectionFactory.java:25)
at br.com.feu.dao.MensagemDAO.salvar(MensagemDAO.java:54)
at br.com.feu.model.InfoManager.recDB(InfoManager.java:63)
at br.com.feu.model.InfoManager.sendMessage(InfoManager.java:33)
at br.com.feu.model.FeuModel.sendPackage(FeuModel.java:57)
at br.com.feu.model.FeuModel.prepareAndSend(FeuModel.java:20)
at br.com.feu.controller.MessageController.create(MessageController.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
... 21 more
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource message.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at br.com.feu.util.ConnectionFactory.<clinit>(ConnectionFactory.java:21)
... 35 more
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:502)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 41 more
agradeço qualquer ajuda.