看起来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());
如果有任何解决方法,请告诉我。
答案 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中的适当数据类型,否则您可以检查是否存在可用的现有映射器类。