日期:2014-05-18  浏览次数:20580 次

hibernate自定义方言类中的问题
我是用的SQLServer 2008数据库,表中有的字段为nvarchar,在使用hibernate查询时,就会报错
public static void main(String[] args) {
Session session=HibernateSessionFactory.getSessionFactory().getCurrentSession();
Transaction tx=session.beginTransaction();
String hql1="select s.*,p.* from jxj_PrizeInfo p,t_main s where p.studentID=s.xh";
List<Object[]> objs=session.createSQLQuery(hql1).list();
tx.commit();
}

错误信息为:
Exception in thread "main" org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
at org.hibernate.dialect.TypeNames.get(TypeNames.java:76)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:99)
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:592)

 所以我想用自定义的方言类解决这个问题,但是我是用registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName()); 的时候,第二个参数会出现红线,求大神解答这是为什么
package com.xin.action;

import java.sql.Types;

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


public class ZdySQLSserverDialect extends SQLServerDialect{
public ZdySQLSserverDialect() {
    super();
    registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());   
 }
}

------解决方案--------------------
楼上说的有道理!+1