开发者

Hibernate SQL QUERY, problem with TEXT data type in mysql

I need to perform a sql query with hibernate ( no mapping ) but i keep getting this error whenever a field has a TEXT data type in MYSQL :

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

I don't know what to do, mapping is not an option ( dynamic tables in the database , so the number of fields is variable ).

Here's the piece of code :

SQLQuery query = session.createSQLQuery(sql);

Object[] values = (Object[]) query.uniqueResult();

sql is a String开发者_开发问答 containing the query ( it runs ok with mysql query engine ). If I change the TEXT data type to varchar, works fine, but that's not an option neither !

Any clues ?


Here's a possible solution:

package iam.dirty;
import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;

public class DialectForGkoloc extends SQLServerDialect {
     public DialectForGkoloc() {
        super();

        registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());   
        registerHibernateType(-1, Hibernate.STRING.getName());
        registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
     }

}

Modify the Hibernate configuration file hibernate.cfg.xml:

<property name="dialect"> 
 org.hibernate.dialect.SQLServerDialect 
</property>

with:

<property name="dialect"> 
 iam.dirty.DialectForGkoloc 
</property>


A quick google (you did try this first, right?) suggest addScalar is your friend here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜