繁体   English   中英

使用 AttributeConverter 转换为 UUID 会导致“没有 JDBC 类型的方言映射”异常

[英]Using AttributeConverter converting to UUID results in 'No Dialect mapping for JDBC type' exception

所以我有一个类,可以说只包含一个UUID字段的Dog (不是实体)。 然后我有以下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映射到字符串在DogString之间进行转换时,liquibase 工作正常并且没有出现异常。

有谁知道为什么会发生异常以及如何修复它?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM