@Cepr0-s的答案是正确的,但我有一些问题。我在尝试使用PostgreSQL org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111时遇到了异常。在我的例子中,解决这个问题的方法是添加自定义的hibernate方言。This资源可能会有帮助。
// CustomPostgreSQLDialect.java
public class CustomPostgreSQLDialect extends PostgreSQL10Dialect {
public CustomPostgreSQLDialect() {
super();
registerHibernateType(Types.OTHER, StringArrayType.class.getName());
registerHibernateType(Types.OTHER, IntArrayType.class.getName());
registerHibernateType(Types.OTHER, JsonStringType.class.getName());
registerHibernateType(Types.OTHER, JsonBinaryType.class.getName());
registerHibernateType(Types.OTHER, JsonNodeBinaryType.class.getName());
registerHibernateType(Types.OTHER, JsonNodeStringType.class.getName());
}
}
3条答案
按热度按时间93ze6v8z1#
谢谢Vlad Mihalcea,我们有这样的机会!)
他创建了hibernate-types库:
它为Hibernate添加了对'json','jsonb'和其他类型的支持:
更多信息:1,2
0vvn1miw2#
@Cepr0-s的答案是正确的,但我有一些问题。我在尝试使用PostgreSQL
org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
时遇到了异常。在我的例子中,解决这个问题的方法是添加自定义的hibernate方言。This资源可能会有帮助。kkbh8khc3#
更新Hibernate 6+(2022+)
随着Hibernate 6的出现,Map到PostgreSQL JSON(B)已经成为可能。
只需要用
JdbcTypeCode(SqlTypes.JSON)
注解字段。非类型化JSON:
(虽然不是每个JSON都会序列化为Map)。
使用序列化为自定义Java类型的JSON:
请参阅本文以获取更多示例:https://thorben-janssen.com/persist-postgresqls-jsonb-data-type-hibernate/