org.hibernate.MappingException:没有JDBC类型的Dialect映射:1111

时间:2011-07-19 06:19:24

标签: java hibernate

我正在使用postgres v8.3,其columntype为XML。 DDL看起来像这样:

CREATE TABLE contact (
"ID" INTEGER NOT NULL , 
"NAME" VARCHAR NOT NULL,
"Details" XML , ......

在映射hbm.xml文件中,我将其映射为:

<key-property name="Details" type="java.lang.String" >
<column name="Details" />
</key-property>

我猜这是错误的原因: JDBC类型的无Dialect映射:1111 当我使用:

运行选择查询时
List<?> contactList= session.createSQLQuery("select * from contact where id=" + val.getId() + " and name= '" + val.getName + "'").list();

但是我可以将“XML”类型映射到java数据类型的另一种方式是什么?

3 个答案:

答案 0 :(得分:2)

您必须使用hibernate提供的org.hibernate.usertype.UserType类指定自定义列类型。

Here是非常好的例子。

感谢。

答案 1 :(得分:1)

Use addScalar();

例如

session.createSQLQuery("select public.flcpool_backup()")
                                     .addScalar("id", Hibernate.BIG_INTEGER)
                                     .addScalar("caf_tbl_id", Hibernate.BIG_INTEGER)
                                     .executeUpdate();  

答案 2 :(得分:0)

尝试在hibernate.cfg.xml中为postgres定义连接方言“hibernate.dialect”。