重视 Hibernate 中的数据类型

来源:互联网 发布:网络贷款哪家申请容易 编辑:程序博客网 时间:2024/04/29 06:07
如果你在 java 中使用 String 类型映射到 SQLServer 的text(或者ntext)类型的话,一定要像下面这样显式指定数据类型,否则就会出现一个错误。

<property name="body" type="text"/>

如果你不显式指定类型会出现类似下面的出错提示:
java.sql.SQLException: The amount of data read from the stream is not =
length.
at net.sourceforge.jtds.jdbc.ClobImpl.getSubString(ClobImpl.java:236)
at net.sourceforge.jtds.jdbc.Support.convert(Support.java:308)
at net.sourceforge.jtds.jdbc.JtdsResultSet.getString(JtdsResultSet.java:879)
at net.sourceforge.jtds.jdbc.JtdsResultSet.getString(JtdsResultSet.java:1161)
at net.sf.hibernate.type.StringType.get(StringType.java:18)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:62)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:53)
at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:67)
at net.sf.hibernate.loader.Loader.hydrate(Loader.java:690)
at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:631)
at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:590)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:505)
at net.sf.hibernate.loader.Loader.getRowFromResultSet(Loader.java:218)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:285)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:138)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
at net.sf.hibernate.loader.Loader.list(Loader.java:1054)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1554)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:49)
原创粉丝点击