최대 절전 모드 4 및 PostGIS 2.0


10

이러한 기술을 통합하는 데 문제가 있습니다.

  • 최대 절전 모드 4.0-M1
  • 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

Tomcat을 사용하고 있었고 연결 풀링 기능입니다. 방금 JNDI를 통해 데이터 소스를 애플리케이션에 노출했습니다 .

나를 위해 일한 것은 다음과 같습니다.

  • 최대 절전 공간에 대한 maven 종속성을 포함하면 최대 절전 모드 자체, postgresql의 jdbc 및 postgis의 jdbc에 대한 전이 종속성이 있습니다. 그래서 내가 한 일은 이러한 종속성을 제거하는 것입니다. 내 폼은 다음과 같습니다.
<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의 확장입니다.

  • 그런 다음 postgis 저장소를 복제 하고 jdbc 확장을 컴파일했습니다. 디렉토리 mvn package에서 실행 하십시오 java/jdbc. 읽어보기를 읽으십시오.
  • 그런 다음 가장 최근의 postgresql-jdbc와 최근 컴파일 된 postgis jdbc를 tomcat의 lib디렉토리에 배치했습니다.
  • Tomcat의 서버 구성에서 데이터베이스 URL을로 변경했습니다 jdbc:postgresql_postGIS://localhost:5432/mydatabase. 그 postgresql_postGIS부분을 주목하십시오 . 또한 드라이버 클래스를로 변경했습니다 org.postgis.DriverWrapper. 이것은 postgis 타입을 네이티브 jdbc에 등록하는 래퍼입니다.

Tomcat의 마지막 리소스 구성은 다음과 같습니다.

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

이 절차는 일반적으로 postgis jdbc의 README에 설명되어 있습니다. 따라서 반드시 읽으십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.