【发布时间】:2014-06-25 03:37:54
【问题描述】:
我对 Hibernate 很陌生,因为我一直使用纯 JDBC。我正在尝试通过对 SQL Server 数据库使用 NetBeans 的逆向工程过程来配置实体。我已经按照 NetBeans 的网页教程进行操作,并且能够在我的项目中添加一个新包并创建所有实体,但是当我在 HQL 编辑器中运行这个简单的查询 from Country 时,我收到了这个错误:
org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
at org.hibernate.type.SerializableType.get(SerializableType.java:39)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2096)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1380)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
at org.hibernate.loader.Loader.getRow(Loader.java:1206)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
Caused by: java.io.StreamCorruptedException: invalid stream header: 32003300
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:252)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:209)
... 23 more
Country.hbm.xml 文件包含以下内容:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 08-may-2014 0:02:21 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="Entity.Country" table="Country" schema="dbo" catalog="TestOTDB">
<id name="countryId" type="string">
<column name="Country_ID" length="36" />
<generator class="assigned" />
</id>
<property name="countryName" type="serializable">
<column name="Country_Name" not-null="true" />
</property>
<property name="countryDescription" type="serializable">
<column name="Country_Description" />
</property>
<property name="countryCode" type="serializable">
<column name="Country_Code" not-null="true" />
</property>
<set name="sites" inverse="true">
<key>
<column name="Site_CountryID" length="36" />
</key>
<one-to-many class="Entity.Site" />
</set>
</class>
</hibernate-mapping>
问题是所有出现“可序列化”的类型在我的 SQL Server 数据库中都应该是 varchar。 有人知道吗?
谢谢!
【问题讨论】:
标签: java sql-server hibernate netbeans reverse-engineering