Olá Pessoal,
To usando o postgres onde tenho uma tabela com um campo do tipo XML.
Na aplicação to usando o hibernate e faço engenharia reversa do banco pra criar minhas classes.
To usando o JDOM para ler o arquivo xml
Porém preciso jogar todo conteúdo em um campo no banco no banco.
OBS: O conteudo do xml e não o arquivo propriamente dito
Classe gerada por engenharia reversa
public class Xml {
private int id;
private String conteudo;
public Xml() {
}
public Xml(int id) {
this.id = id;
}
public Xml(int id, String conteudo) {
this.id = id;
this.conteudo = conteudo;
}
//gets e sets
}
Arquivo hbm.xml
<hibernate-mapping>
<class name="xml.Xml" table="xml" schema="public">
<id name="id" type="int">
<column name="id" />
<generator class="sequence">
<param name = "sequence">xml_id_seq</param>
</generator>
</id>
<property name="conteudo" type="string">
<column name="conteudo" />
</property>
</class>
</hibernate-mapping>
Classe Main
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("C:\\arquivo.xml");
Element elem = doc.getDocumentElement();
GenericDAO<Xml> dao = new GenericDAO<Xml>(Xml.class);
Xml x = new Xml();
x.setConteudo(String.valueOf(elem));
dao.inserir(x);
Erro:]
SEVERE: ERRO: coluna "conteudo" é do tipo xml mas expressão é do tipo character varying
Dica: Você precisará reescrever ou converter a expressão.
Posição: 47
Esse erro diz que há incompatibilidade de tipos de dados classe/banco.
Usando a engenharia reversa do bando ele cria a classe XML com o tipo Serializable mas encontrei comentarios dizendo pra alterar pra String
O tipo no postgres eu defini como XML.
Alguém tem idéia d como resolver isso ou indicar um tutorial para inserir todo conteúdo em um campo do tipo xml no postgres ?