हाइबरनेट स्थानिक 4 और पोस्टगिस 2.0


10

मैं इन प्रौद्योगिकियों को एकीकृत करने के लिए कुछ मुद्दे दे रहा हूं:

  • हाइबरनेट स्थानिक 4.0-एम 1
  • PostGIS 2.0.2 (संकलित JDBC 2.0.2 के साथ)
  • हाइबरनेट 4.1.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

मैं टॉमकैट का उपयोग कर रहा था, और यह कनेक्शन पूलिंग सुविधा है। मैंने अभी-अभी JNDI के माध्यम से अपने आवेदन के लिए एक डेटासोर्स का खुलासा किया है ।

यहाँ मेरे लिए क्या काम किया है:

  • जब मैंने हाइबरनेट-स्थानिक के लिए मावेन निर्भरता को शामिल किया, तो यह हाइबरनेट के लिए एक सकर्मक निर्भरता है, पोस्टग्रैसक्ल्स जेडडीबी और पोस्टगिस जेडीबीसी। इसलिए मैंने जो किया वह इन निर्भरताओं (पुरानी) को दूर करना था। मेरा पोम इस तरह दिखता है:
<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>

Postgis jdbc को postgresql jdbc की जरूरत होती है।

  • फिर मैंने पोस्टगिस रिपॉजिटरी को क्लोन किया और उनके जेडबीसी एक्सटेंशन को संकलित किया। सिर्फ डायरेक्टरी mvn packageमें चलते java/jdbcहैं। इसकी रीडमी पढ़ें।
  • तब मैंने सबसे हालिया पोस्टग्रैस्कल-जेडडीबी और हाल ही में संकलित पोस्टगिस जेडीबीसी को टॉमकैट की libनिर्देशिका में रखा।
  • टॉमकैट के सर्वर कॉन्फ़िगरेशन पर, मैंने डेटाबेस यूआरएल को बदल दिया है jdbc:postgresql_postGIS://localhost:5432/mydatabasepostgresql_postGISभाग को नोटिस करें । मैंने ड्राइवर की क्लास भी बदल दी org.postgis.DriverWrapper। यह एक रैपर है जो देशी jdbc के साथ पोस्टगिस प्रकारों को पंजीकृत करता है।

यहाँ मेरा अंतिम संसाधन विन्यास है

<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"/>

यह प्रक्रिया आम तौर पर पोस्टगिस जेडीबीसी की आरईएडीएमई में वर्णित है। तो सुनिश्चित करें कि आप इसे पढ़ते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.