首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Hibernate的getSQLQuery方法对char类型的解析有关问题

2012-10-15 
Hibernate的getSQLQuery方法对char类型的解析问题?由于数据库中我们定义了id为char型,而hibernate自动会把

Hibernate的getSQLQuery方法对char类型的解析问题

?

由于数据库中我们定义了id为char型,而hibernate自动会把char(n)转换为char(1)型,所以出现了上面的结果。

?

知道了什么原因,我们就可以思考解决方案了。

?

?

在hibernate.hbm.xml中修改数据库方言为我们自定义的。

<property name="dialect">com.ying.LongCharDialect</property>

?

?

?

?

重新定义一个新的方言类,使char型的数据映射为String类型

?

public class LongCharDialect extends SybaseDialect {

??? public LongCharDialect(){

??????? super();

??????? registerHibernateType(Types.CHAR, Hibernate.STRING.getName());

??? }

?

}

?

?

?

?

Query query = session.createSQLQuery(sHQL).addScalar("id", Hibernate.STRING).addScalar("name");

?????? 这样就解决了CHAR字段类型只出一位字符的问题。 但是需要把其他字段也addScalar()进来!

???????? addScalar (String???? arg)里的参数是需要大写的!

Query query = session.createSQLQuery(sHQL).addEntity(TTest1.class);

???? 至此,已解决,不过还是建议不要用char类型,有那么好的varchar,为啥不用呢?

?

?

?

热点排行