Чтобы избежать проблем между типами UUID без указания аннотации @Type
(что в основном означает, что вам нужно настроить все аннотации, когда вы хотите перейти с postgres на mysql или наоборот ...) Я использую package-info.java
с аннотацией гибернат @TypeDef
на этом пакете.
Вот пример настройки вашего приложения:
Предполагая, что module/src/main/java/app.package.domain
содержит ваши сущности. И ваши тесты хранятся в module/src/test/java/app.package
.
Просто создайте два package-info.java
в ваших domain
пакетах.
Убедитесь, что файлы информации о пакете всегда находятся в одном пакете (для тестирования и производства). См. Следующий пример ниже:
src/main/java
app
package
domain
package-info.java
src/test/java
app
package
domain
package-info.java
Содержимое вашей продукции package-info.java
должно выглядеть следующим образом (Postgres):
@TypeDef(
name = "pg-uuid",
defaultForType = UUID.class,
typeClass = PostgresUUIDType.class
)
package app.package.domain;
import org.hibernate.annotations.TypeDef;
import org.hibernate.type.PostgresUUIDType;
import java.util.UUID;
И вот как должна выглядеть ваша «конфигурация» (H2):
@TypeDef(
name = "uuid-char",
defaultForType = UUID.class,
typeClass = UUIDCharType.class
)
package app.package.domain;
import org.hibernate.annotations.TypeDef;
import org.hibernate.type.UUIDCharType;
import java.util.UUID;
Надеюсь, это поможет