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

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

我收到以下错误:

javax.persistence.PersistenceException:org.hibernate.MappingException:没有JDBC类型的Dialect映射: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());

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

最佳答案
您可以在FactoryBean中再定义一个名为Type Definitions的属性.您可以在遇到json数据类型时提供显式类来映射数据.

<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以将数据从jsonDatatype映射到Java中的相应数据类型,否则您可以检查是否存在可用的现有映射器类.

转载注明原文:java – Hibernate是否支持Postgres 9.2 Json数据类型? - 代码日志