gpt4 book ai didi

java - 使用 AttributeConverter 转换为 UUID 导致 'No Dialect mapping for JDBC type' 异常

转载 作者:行者123 更新时间:2023-12-05 07:20:01 24 4
gpt4 key购买 nike

所以我有一个类,假设 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 以在 DogString 之间转换时,还通过将 UUID 映射到一个字符串,liquibase 工作正常,没有出现异常。

有谁知道异常发生的原因以及如何解决?

最佳答案

我对 postgis Geometry 有同样的问题,并得出结论,与实体字段支持的类型相比,转换器支持的类型是有限的。在这篇文章中 https://gitter.im/hibernate/hibernate-orm?at=5ab11305e4d1c636041f1251如果您搜索“方言”,您会看到类似的问题。答案似乎是 Hibernate 5.2 不可能。也许 Hibernate 6 可以实现。

关于java - 使用 AttributeConverter 转换为 UUID 导致 'No Dialect mapping for JDBC type' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57654298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com