Sidslog

Июль 9, 2008

Hibernate + MySQL5 (MappingException: JDBC type = -1)

Filed under: Uncategorized — Метки: , , , , — sidslog @ 11:16 дп

Проблема возникала при использовании Native Query в Jboss-4.2.2. В качестве БД использовалась MySQL 5.*. То есть при запуске запросов вида :

Query query =getEntityManager().createNativeQuery(“SELECT agr.AGREEMENTID , enc.NAME\n” +
“\tFROM GEL$DOC$AGREEMENT agr INNER JOIN GEL$DOC$AGR$ENCLOSURE enc ON (enc.AGREEMENTID = agr.AGREEMEN
TID)\n” +
“UNION\n” +
“SELECT template.TEMPLATEID, tenc.NAME\n” +
“\tFROM GEL$DOC$TEMPLATE template INNER JOIN GEL$DOC$TPL$PARAGRAPH tenc ON (tenc.TEMPLATEID = templat
e.TEMPLATEID)”) ;
List
obj = query.getResultList() ;
)

падала ошибка:

ERROR [STDERR] javax.ejb.EJBException: javax.persistence.Persistenc
eException: org.hibernate.MappingException:
No Dialect mapping for JDBC type: -1

Проблема оказалась в использовании полей типа text, которые не мапятся в hibernate.
Решить проблему удалось, пересобрав hibernate, изменив в Mysql5Dialect метод registerVarcharTypes и добавив туда строки

registerColumnType(Types.LONGVARCHAR, 65535, “text”);
registerHibernateType(Types.LONGVARCHAR, 65535, “text”);

Theme: Silver is the New Black. Блог на WordPress.com.

Follow

Get every new post delivered to your Inbox.