1

私は最近、プロジェクト内で地理的なタイプを扱うときに JTS ライブラリを使用する可能性を発見しました。ORMとして休止状態を使用しています(休止状態空間を含む)。

JTS の存在を知る前は、LatLon というカスタム クラスに座標を格納していました。ポリラインを管理したいときはいつでも、リストなどのリストを作成しました。データベースでCRUD操作を行うときのパフォーマンスに関して言えば、それがどれほど悪いかを実感しました。

前に言ったように、LatLon クラスを JTS の Point クラスに置き換えることができることを発見しました。実装を開始し、LatLon 属性を置き換えていますが、いくつか質問があります。

  1. XML (アノテーションではなく) を使用してクラスをマップします。以下は正しいですか?

    (ジャバクラス)

    ... private Point puntoInicio; ...

    (XML マッピング)

    <property name="puntoInicio" type="org.hibernate.spatial.GeometryType" column="RUTA_PUNTOINICIO" not-null="true" />

  2. ポリラインを保存するにはどうすればよいですか? Polyline という名前のデータ型は見つかりませんでした。ただし、LineString のような他のものを見つけました。これを使用してポリラインを表現できますか? それらをどのようにマッピングしますか?

どうもありがとう!

編集:私はHibernate 5.0.7.Final + Hibernate Spatial 5.0.7.Finalを使用しています

編集 2: 遅れて申し訳ありませんが、回答を受け付けていません。少し前に全体の修正を元に戻しましたが、このように修正して実装したいと思います。お時間をいただき、ありがとうございました。

4

1 に答える 1

0

列のタイプを指定せずに、Hibernate と Hibernate Spatial を 5 に更新することで動作させることができました。そうすれば、データはバイナリとして保存されます。問題が発生しました。データベースからデータを取得するときに「Conductor」というクラスがあり、Hibernate が例外をスローします。

    Error Exception: could not deserialize
org.hibernate.type.SerializationException: could not deserialize
    at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:243)
    at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:138)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:113)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:27)
    at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:53)
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:234)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:224)
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:300)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2727)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1728)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1654)
    at org.hibernate.loader.Loader.getRow(Loader.java:1543)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:727)
    at org.hibernate.loader.Loader.processResultSet(Loader.java:972)
    at org.hibernate.loader.Loader.doQuery(Loader.java:930)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
    at org.hibernate.loader.Loader.doList(Loader.java:2611)
    at org.hibernate.loader.Loader.doList(Loader.java:2594)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
    at org.hibernate.loader.Loader.list(Loader.java:2418)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
    ...
    //stuff from my webapp
    ...
Caused by: java.io.StreamCorruptedException: invalid stream header: 01303130
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:309)
    at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:299)
    at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:218)
    ... 85 more
于 2016-01-29T08:52:22.223 に答える