다음 설정이 작동하도록하려고합니다. Wildfly 8.1.0 (JPA 구현으로 Hibernate와 함께 제공) Postgres 9.3 데이터베이스
Java String을 postgres의 xml 유형의 열에 매핑하고 싶지만 표현식이 varchar 유형 인 동안 열이 "xml"유형이라는 오류가 발생합니다.
내가 찾은 대부분의 (아마도) 솔루션은 데이터베이스 특정 Java 클래스, 최대 절전 모드 특정 해결 방법 또는 Stackoverflow에 대한 답변되지 않은 질문입니다.
정의 된 JPA-Methods를 사용하여 마음대로 Mysql 또는 SQLServer로 전환 할 수 있고 코드를 건드리지 않고 Widlfly + hibernate를 glassfish 또는 tomcat + openJPA로 대체 할 수도 있습니다.
그러나 데이터베이스에서 무언가를 조정하는 것은 괜찮습니다.
물론 저는 이미 몇 가지 조사를했고이 게시물을 찾았습니다. http://www.pateldenish.com/2013/05/inserting-json-data-into-postgres-using-jdbc-driver.html
그래서 나는 텍스트와 varchar에 대한 암시 적 캐스트를 추가하려고했습니다.
create cast (varchar as xml) without function as implicit;
create cast (text as xml) without function as implicit;
그러나 postgres는 이러한 캐스트가 이미 존재한다고 말합니다. 나는 임의의 문자열을 xml 열에 삽입하여 이것을 확인했습니다.
예외가 계속 발생합니다.
힌트와 방향에 미리 감사드립니다.
BillDoor
최신 정보:
postgres 9.3.1102.jdbc41을 사용합니다.
문은 최대 절전 모드 문제 :
[PreparedStatement] setLong(3, 20)
[PreparedStatement] setNull(2, -3)
[PreparedStatement] setNull(1, 12)
[Connection] prepareStatement(insert into testTable (xml, stuff, id) values (?, ?, ?))
참고 : stuff와 xml은 nullable이고 ID는 primaryKey이며 20은 시퀀스에서 올바르게 검색됩니다.
pgsql-hackers에 대한 최근 토론 후 나는 이것을 처리하는 더 쉬운 방법이 있음을 발견했습니다. JDBC URL 또는 연결시 드라이버에 전달 된 속성 맵에서 다음을 추가합니다.
stringtype=unspecified
이렇게하면 PgJDBC가 할당 된 값 을 PostgreSQL setString(...)
에 unknown
유형 으로 보고 하고 대상 필드가 xml
이므로 문자열이 유형 인 것으로 처리되어야한다고 추론합니다 xml
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다