Hibernate是否支持Postgres 9.2 Json数据类型?

时间:2013-12-04 19:39:58

标签: java json hibernate jpa hibernate-mapping

看起来Hibernate不支持Postgres Json数据类型。

我收到以下错误:

javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

配置:

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="PGDataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="generateDdl" value="true" />
                <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
            </bean>
        </property>         
    </bean>

Java代码:

query = "select row_to_json(row) from ( " + query + ") row";

EntityManager em = emf.createEntityManager();

List resultList = em.createNativeQuery(query).getResultList();
System.out.println("resultList " + resultList +  " resultList " + resultList.getClass());

如果有任何解决方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以在名为FactoryBean的{​​{1}}中再定义一个属性。您可以在遇到json数据类型时提供显式类来映射数据。

Type Definitions

您需要创建映射类<property name="typeDefinitions"> <list> <bean id="oracleXmlType" class="org.springframework.orm.hibernate3.TypeDefinitionBean"> <property name="typeName" value="jsonDataType" /> <property name="typeClass" value="org.test.postgres.JsonDataType" /> </bean> </property> 以将数据从JSonDataType映射到Java中的适当数据类型,否则您可以检查是否存在可用的现有映射器类。