mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Baza danych + Hibernate - złe mapowanie https://forum.mix-soft.pl/viewtopic.php?f=15&t=3789 |
Strona 1 z 1 |
Autor: | mSitarz [ 2012-02-21, 14:22 ] |
Tytuł: | Baza danych + Hibernate - złe mapowanie |
Witam. Pracuję nad aplikacją która korzysta z bady danych Symfoni. Po wygenerowaniu DDF'ów mam dostęp do bazy poprzez Pervasive Control Center. Moja aplikacja jest pisana w Javie, w związku z czym muszę użyć JDBC aby połączyć się z bazą danych. Korzystam także z Hibernate aby nie musieć pisać czystych zapytań SQL'owych, a korzystać z wygenerowanych obiektów. Po wygenerowaniu klas na podstawie table, w miejscach gdzie kolumny są typu "date", dostaję pole klasy Serializable. Gdy probuję pobrać wszystkie rekordy z basy, dostaje błąd: Kod: Exception in thread "main" org.hibernate.type.SerializationException: could not deserialize at org.hibernate.util.SerializationHelper.doDeserialize(SerializationHelper.java:262) at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:306) at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:130) at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:116) at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:39) at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:62) at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230) at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331) at org.hibernate.type.ComponentType.hydrate(ComponentType.java:593) at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:668) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:606) at org.hibernate.loader.Loader.doQuery(Loader.java:829) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) at org.hibernate.loader.Loader.doList(Loader.java:2542) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) at org.hibernate.loader.Loader.list(Loader.java:2271) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) at pl.lanox.test.Test.main(Test.java:19) Caused by: java.io.StreamCorruptedException: invalid stream header: 32303036 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:328) at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:318) at org.hibernate.util.SerializationHelper.doDeserialize(SerializationHelper.java:237) ... 22 more hibernate.cfg.xml Kod: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.pervasive.jdbc.v2.Driver</property> <property name="hibernate.connection.password">pass</property> <property name="hibernate.connection.url">jdbc:pervasive://10.10.10.4/NOWY3</property> <property name="hibernate.connection.username">user</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="current_session_context_class">thread</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> Pobieranie listy: Kod: Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<Kh> list = (List<Kh>) session.createCriteria(Kh.class).list(); session.getTransaction().commit(); Dziwną rzeczą jest to, że po zrobieniu połączenia z bazą danych w Eclipsie, kolumna ma typ "9" (pozostałe są poprawne np. int, varchar) Gdy probuję na sztywno zmienić typ z Serializable na Date lub String, dostaje listę pustych obiektów. Zmiana dialektu także nie pomaga. Próbowałem dodać coś do bazy w celach testowych, i działa. Co robię źle lub czego nie robie ? Będę wdzięczny za każdą wskazówkę. Mariusz Sitarz |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |