簡體   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