【发布时间】:2019-12-30 10:22:08
【问题描述】:
所以我有一个类,假设 Dog(不是实体)只包含一个 UUID 字段。然后我有以下AttributeConverter:
@Converter
public class DogConverter implements AttributeConverter<Dog, UUID> {
@Override
public UUID convertToDatabaseColumn(final Dog attribute) {
return attribute.getUuid();
}
@Override
public Dog convertToEntityAttribute(final UUID dbData) {
return new Dog(dbData);
}
}
然后我将Dog 用作实体类DogHouse 中的字段:
@Entity
class DogHouse {
...
@Convert(converter = DogConverter.class)
private Dog dog;
...
}
然后我使用 liquibase 针对空的 postgresql 数据库创建差异更改日志,然后导致以下异常:
org.hibernate.MappingException: No Dialect mapping for JDBC type: 206384196
当我更改为DogConverter 以通过还将UUID 映射到字符串来在Dog 和String 之间进行转换时,liquibase 可以正常工作,并且不会出现异常。
有谁知道为什么会发生异常以及如何解决它?
【问题讨论】:
-
将
@Converter添加到您的DogConverter.class。然而你的设置看起来你想要一个使用@OneToOne的法线映射 -
@XtremeBaumer
@Converter已经在DogConverter上,我忘了在示例中包含它,我编辑了示例。 -
显示你的hibernate sessionFactory的配置
-
我遇到了类似的问题,数据库类型也是 UUID - 您找到解决方案还是将其保留为字符串?
-
@MitchKent 我没有找到解决方案,我将其保留为字符串
标签: java postgresql hibernate jpa liquibase