quarta-feira, 29 de junho de 2011

No Dialect mapping for JDBC type: 2004

Olá..

Um cliente aqui usa o banco de dados Informix.. ao testar nosso projeto nesse banco tive o seguinte erro:

13:57:15,040 INFO [DatabaseMetadata] table not found: MY_TABLE
13:57:15,041 ERROR [SchemaUpdate] could not complete schema update: org.hibernate.MappingException: No Dialect mapping for JDBC type: 2004
at org.hibernate.dialect.TypeNames.get(TypeNames.java:79) [:3.5.5-Final]
at org.hibernate.dialect.TypeNames.get(TypeNames.java:104) [:3.5.5-Final]
at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:347) [:3.5.5-Final]

O problema era que temos uma tabela que guarda uma imagem em uma de suas colunas e usamos @Lob no seu mapeamento. O Dialeto do Informix não aceitou o @Lob.

Para resolver extendi o Dialeto do Informix e adicionei as seguinte linhas no construtor:

registerColumnType(Types.BLOB, "blob");
registerColumnType(Types.CLOB, "clob");

Mais detalhes em http://www.snailshell.de/blog/archives/2007/06/entry_108.html

Alterei o persistence.xml para usar o dialeto que criei e o projeto funcionou perfeitamente.

Outras fontes:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2646
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2523

Vaaleu
Adriano Schmidt

Um comentário: