代码:
                  sql='select i.sid,i.sintro from tb_source_info i';
                 Session session = getSession();
Query query = session.createSQLQuery(sql).setResultTransformer(
Transformers.ALIAS_TO_ENTITY_MAP);
return query.list();执行后抛出异常:
Hibernate: select i.sid,i.sintro from tb_source_info i 
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
原因:Mysql 数据库中tb_source_info表中的sinotro字段是text类型的,这里不支持,请问如何解决,我这里必须要写sql语句,不能写hql语句?

解决方案 »

  1.   

    为什么不能用hql呢?反正是一张表里的字段?
      

  2.   

      sql='select i.sid,i.sintro from tb_source_info i';
      Session session = getSession();
    Query query = session.createSQLQuery(sql).setResultTransformer(
    Transformers.ALIAS_TO_ENTITY_MAP);
    return query.list();执行后抛出异常:
    Hibernate: select i.sid,i.sintro from tb_source_info i  
    org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    好像是你类用hibernate映射的类型不对,把这个类和映射文件发来看看。
    还有用hql查询时应该用类名。tb_source_info这个看着像个数据库表。也不知道是什么东西了。
      

  3.   

    拓展MySql方言类即可public class ExtendMysqlDialect extends MySQLDialect {   public ExtendMysqlDialect(){
        super();
        registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
      }}