2017-12-11 3 views
0

이미 Wildfly 10, Hibernate Spatial 5.0.1 및 PostGis로 설정되어 있습니다. 내가 sucessufully 데이터베이스에 데이터를 삽입 할 수 있습니다 (psql의 명령 라인을 통해 확인)하지만 데이터베이스에서 읽을 때, 나는 다음과 같은 오류가 발생합니다 :Hibernate Spatial을 사용하여 PostGis에서 데이터 가져 오기

import com.vividsolutions.jts.geom.Point; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class Location { 

/*Empty constructor used on Hibernate*/ 
public Location() { 
} 

public Location(String name, Point point) { 
    this.name = name; 
    this.location = point; 
} 

@Id 
private String name; 

@Column(nullable = false) 
private Point location; 
} 

내 방법 : 여기

Caused by: java.lang.IllegalStateException: Received object of type byte[] 

내 기업의 :

public Location findByName(final String name) { 
    Query query = entityManager.createQuery("select l from Location l where l.name=:name", Location.class); 
    query.setParameter("name", name); 
    List<Location> result = query.getResultList(); 
    if (result != null && result.size() > 0) 
     return result.get(0); 
    return null; 
} 

데이터를 올바르게 삽입 할 수는 있지만 읽을 수는 없습니다. 처음에 나는 Hibernate Spatial의 표기법, 불완전한 의존성이 pom.xml이거나 무언가가 persistence.xml 인 것에 대해 약간의 불일치를 생각했다. 그러나 나는 이것을 쓸 수 있다고 생각하지 않는다. Herefind이고 그는 정확히 내가 한 쿼리를 사용합니다. 내가 뭘 잘못하고있어?

답변

1

문제는 question과 동일합니다. 기본적으로 postgis와 모든 종속성을 서버 (jboss/wildfly)에 설치하고 deps를 provided으로 설정해야합니다. 여기

는 대답의 몸 : 당신이 사용하는 최대 절전 모드가 번들로 제공하기 때문에 당신은 PostGIS와를 추가하고 응용 프로그램을 배포하기 전에 제이보스에 대한 기타 관련 libs와-공간 최대 절전 모드 필요

이있다 wildfly와 함께하지만 다른 라이브러리는 전쟁에 번들되므로 다른 클래스 로더를 사용하고 있습니다.

this code을 체크하면 캐스트가 정확하고 오류 메시지가 의미가 없다는 것을 알 수 있습니다. 이것은 클래스 로더에 근본적인 문제입니다.

당신은 당신이 할 수있는이 작업을 수행하려면 제이보스 모든 libs와 추가해야이 문제를 해결하려면 :

cd $JBOSS_PATH/modules/system/layers/base/org/hibernate/main 
mvn dependency:copy -Dartifact=org.hibernate:hibernate-spatial:5.0.7.Final:jar -DoutputDirectory=. 
mvn dependency:copy -Dartifact=org.geolatte:geolatte-geom:1.0.1:jar -DoutputDirectory=. 
mvn dependency:copy -Dartifact=com.vividsolutions:jts:1.13:jar -DoutputDirectory=. 

편집합니다 module.xml 파일을 당신의 deps 추가 :

<resource-root path="hibernate-spatial-5.0.7.Final.jar"/> 
<resource-root path="jts-1.13.jar"/> 
<resource-root path="geolatte-geom-1.0.1.jar"/> 

와의를 종속성 태그, 추가 :

또한 postgresql을 사용하는 경우 종속성 태그 :

<module name="org.postgresql"/> 

정확한 병을 다운로드하려면 mvn 명령의 올바른 버전을 사용하십시오.

관련 문제