【问题标题】:Hibernate Postgres could not deserializeHibernate Postgres 无法反序列化
【发布时间】:2013-01-23 22:26:16
【问题描述】:
public List<Marki> getMarki()
      {
        List<Marki> markiList = null;
        try {
            Session session = HibernateSession.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            Query q = session.createQuery("from Marki ");
            if ( q != null ) {
                markiList = ( List<Marki> ) q.list();
            }
            // session.getTransaction().commit();
        } catch ( Exception e ) {
            e.printStackTrace();
        }
        return markiList;
 }

映射

<hibernate-mapping>
    <class name="bazaMap.Marki" table="marki" schema="public">
        <id name="id" type="int">
            <column name="id" />
            <generator class="assigned" />
        </id>
        <property name="marka" type="serializable">
            <column name="marka" unique="true" />
        </property>
        <set name="modeles" inverse="true">
            <key>
                <column name="markaid" not-null="true" />
            </key>
            <one-to-many class="bazaMap.Modele" />
        </set>
    </class>
</hibernate-mapping>


N



CREATE TABLE marki
(
  id serial NOT NULL,
  marka character varying(32)[],
  CONSTRAINT glowny PRIMARY KEY (id),
  CONSTRAINT marki_marka_key UNIQUE (marka)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE marki
  OWNER TO postgres;

FO:休眠:选择 marki0_.id 作为 id3_,marki0_.marka 作为 marka3_ 来自 public.marki marki0_ 信息:无法从结果集中读取列值:marka3_;无法反序列化 严重:org.hibernate.type.SerializationException:无法反序列化 在 org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217) 在 org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240) 在 org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82) 在 org.hibernate.type.SerializableType.get(SerializableType.java:39) 在 org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163) 在 org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154) 在 org.hibernate.type.AbstractType.hydra(AbstractType.java:81) 在 org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2096) 在 org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1380) 在 org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308) 在 org.hibernate.loader.Loader.getRow(Loader.java:1206) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580) 在 org.hibernate.loader.Loader.doQuery(Loader.java:701) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) 在 org.hibernate.loader.Loader.doList(Loader.java:2220) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) 在 org.hibernate.loader.Loader.list(Loader.java:2099) 在 org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:912) 在 org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) 在 org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) 在 org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 在 DataFetcher.getMarki(DataFetcher.java:40)

1.所有映射代码均由 NetBeans 生成。任何想法可能是错误的甚至更好的 - 如何解决它?

废话 “你的帖子没有太多的上下文来解释代码部分;请更清楚地解释你的场景。”

【问题讨论】:

  • stackoverflow 很聪明。你真的应该像它建议的那样“更清楚地解释你的场景”。您应该添加有关问题所在的更多信息,例如确切的错误消息或堆栈跟踪。
  • 我确实添加了错误消息

标签: hibernate postgresql


【解决方案1】:

我敢打赌这是你的问题:

marka character varying(32)[],

您可能不想要一个 array 字符。这可能是你想要的:

marka varchar(32),

最后我检查了 Hibernate 不知道如何处理开箱即用的 Postgres 数组,因为很少有 RDBMS 支持它们。

【讨论】:

  • 如何在 Postgres 中定义 varchar(32)?
  • varchar(32)character varying(32) 的简写,两者都将“正常工作”。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多