我正在尝试使以下设置生效:
Wildfly 8.1.0 (带有Hibernate作为JPA实现)
Postgres 9.3数据库
我想将Java字符串映射到postgres的xml类型列,但我得到了错误,该列的类型为“xml”,而表达式的类型为varchar。
我找到的大多数(可能)解决方案都是特定于数据库的Java类、Hibernate特定的解决方法或在Stackoverflow上没有回答的问题。
我想使用定义的JPA方法,以便能够随意切换到Mysql或SQLServer,甚至可以替换Widlfly + hibernate为glassfish或tomcat + openJPA而不触及代码。
但是在数据库中微调一些东西也是可以的。
当然,我已经进行了一些研究,并找到了这篇文章: http://www.pateldenish.com/2013/05/inserting-json-data-into-postgres-using-jdbc-driver.html 因此,我尝试添加了文本和varchar的隐式转换:
但 PostgreSQL 只是说这些转换已经存在。我通过将随机字符串插入 xml 列来验证此问题,而这个操作是成功的。
异常仍然存在。
谢谢您提前给予提示和指导。
BillDoor 更新:
我使用的是 postgres 9.3.1102.jdbc41
Hibernate 发出的语句:
我想将Java字符串映射到postgres的xml类型列,但我得到了错误,该列的类型为“xml”,而表达式的类型为varchar。
我找到的大多数(可能)解决方案都是特定于数据库的Java类、Hibernate特定的解决方法或在Stackoverflow上没有回答的问题。
我想使用定义的JPA方法,以便能够随意切换到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;
但 PostgreSQL 只是说这些转换已经存在。我通过将随机字符串插入 xml 列来验证此问题,而这个操作是成功的。
异常仍然存在。
谢谢您提前给予提示和指导。
BillDoor 更新:
我使用的是 postgres 9.3.1102.jdbc41
Hibernate 发出的语句:
[PreparedStatement] setLong(3, 20)
[PreparedStatement] setNull(2, -3)
[PreparedStatement] setNull(1, 12)
[Connection] prepareStatement(insert into testTable (xml, stuff, id) values (?, ?, ?))
提示:stuff和xml可以为空,ID是主键,20正确地从序列中检索出来。