হাইবারনেট স্পিটিয়াল 4 এবং পোস্টজিআইএস 2.0


10

এই প্রযুক্তিগুলি সংহত করতে আমার কিছু সমস্যা হচ্ছে:

  • হাইবারনেট স্পেসিয়াল ৪.০-এম 1
  • পোস্টজিআইএস ২.০.২ (সংকলিত জেডিবিসি ২.০.২ সহ)
  • হাইবারনেট ৪.১.১

নির্দিষ্ট ত্রুটিটি হ'ল:

Caused by: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of org.postgis.PGgeometry. Use setObject() with an explicit Types value to specify the type to use.

সত্তার টীকাটি হ'ল:

@NotNull
@Column(columnDefinition="Geometry")
@Type(type="org.hibernate.spatial.GeometryType")
private Point geom;

এবং পয়েন্ট তৈরি উদাহরণ:

Location location = new Location();
WKTReader fromText = new WKTReader();
Point geom = null;
try {
    geom = (Point) fromText.read("POINT(-56.2564083434446 -34.8982159791812)");
} catch (ParseException e) {
    throw new RuntimeException("Not a WKT string:" + "SRID=4326;POINT(-56.2564083434446 -34.8982159791812)");
}
if (!geom.getGeometryType().equals("Point")) {
    throw new RuntimeException("Geometry must be a point. Got a " + geom.getGeometryType());
}
location.setGeom(geom);
locationDAO.insert(location);

উত্তর:


5

আমি টমকেট ব্যবহার করছিলাম, এবং এটি সংযোগ পুলিংয়ের সুবিধা রয়েছে। আমি স্রেফ জেএনডিআইয়ের মাধ্যমে আমার অ্যাপ্লিকেশনটিতে একটি ডেটাসোর্স উন্মুক্ত করেছি ।

আমার জন্য কী কাজ করেছে তা এখানে:

  • যখন আমি হাইবারনেট-স্থানিকের জন্য মাভেন নির্ভরতা অন্তর্ভুক্ত করেছি, তখন এটি হাইবারনেট নিজেই, পোস্টগ্রেসকিএল এর জেডিবিসি এবং পোস্টগ্রিসের জেডিবিসি-র জন্য একটি ট্রানসিটিভ নির্ভরতা থাকে। সুতরাং আমি যা করেছি তা হ'ল এই নির্ভরতাগুলি (পুরানো) সরিয়ে ফেলা। আমার পোমটি দেখতে এমন দেখাচ্ছে:
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-spatial</artifactId>
    <version>4.0</version>
    <exclusions>
        <exclusion>
            <artifactId>hibernate-core</artifactId>
            <groupId>org.hibernate</groupId>
        </exclusion>
        <exclusion>
            <artifactId>postgis-jdbc</artifactId>
            <groupId>org.postgis</groupId>
        </exclusion>
        <exclusion>
            <artifactId>postgresql</artifactId>
            <groupId>postgresql</groupId>
        </exclusion>
    </exclusions>
</dependency>

পোস্টগ্রিস জেডিবিসি হ'ল পোস্টগ্রেসকিএল জেডিবিসি যেটি আপনার প্রয়োজন।

  • তারপরে আমি পোস্টগ্রিজ সংগ্রহস্থলের ক্লোন করে তাদের জেডিবিসি এক্সটেনশনটি সংকলন করেছি। শুধু চালানোর mvn packageমধ্যে java/jdbcডিরেক্টরি। এর রিডমি পড়ুন।
  • তারপরে আমি সর্বাধিক সাম্প্রতিক পোস্টগ্র্যাস্কেল-জেডিবিসি এবং সাম্প্রতিক সংকলিত পোস্টজিস জেডিবিসি টমকেটের libডিরেক্টরিতে রেখেছি
  • হুল বিড়াল এর সার্ভারে কনফিগারেশনের উপর, আমি ডাটাবেসের URL টি পরিবর্তিত jdbc:postgresql_postGIS://localhost:5432/mydatabasepostgresql_postGISঅংশটি লক্ষ্য করুন । আমি ড্রাইভার ক্লাসও বদলেছি org.postgis.DriverWrapper। এটি একটি মোড়ক যা দেশীয় জেডিবিসি-র সাথে পোস্টগ্রিস ধরণের নিবন্ধন করে।

টমকাটে এখানে আমার চূড়ান্ত সংস্থান কনফিগারেশন:

<Resource auth="Container"
          maxActive="120" maxIdle="10" name="jdbc/myapp"
          username="myuser" password="mypassword"
          poolPreparedStatements="true" type="javax.sql.DataSource" 
          driverClassName="org.postgis.DriverWrapper"
          validatingQuery="select 1"
          url="jdbc:postgresql_postGIS://localhost:5432/myapp"/>

এই পদ্ধতিটি সাধারণত পোস্টজিস জেডিবিসির README এ বর্ণিত হয়। সুতরাং আপনি এটি পড়ে তা নিশ্চিত করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.