Вопрос

Я хочу использовать собственный тип UUID PostgreSQL с UUID Java.Я использую Hibernate в качестве своего JPA-провайдера и ORM.Если я попытаюсь сохранить его напрямую, он просто будет сохранен как bytea в Postgres.

Как я могу это сделать?

Это было полезно?

Решение

Попробуйте использовать последнюю версию драйвера JDBC для разработки (в настоящее время 8.4dev-700) или дождитесь выхода следующей версии.(Отредактировано для добавления:8.4-выпущен 701)

В примечания к выпуску упомяните об этом изменении:

Сопоставьте тип uuid базы данных с java.util.UUID.Это работает только для относительно новых версий server (8.3) и JDK (1.5).

Другие советы

Вот репост моего ответа на UUID Postgresql поддерживается Hibernate? ...Я знаю, что этот вопрос устарел, но если кто-то наткнется на него, это поможет ему.

Это может быть решено путем добавления следующей аннотации к UUID:

import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;

Что касается того, почему Hibernate просто не делает это настройкой по умолчанию, я не мог бы вам сказать...

Обновить:Кажется, все еще существуют проблемы с использованием createNativeQuery способ открытия объектов, имеющих поля UUID.К счастью, createQuery метод до сих пор отлично работал для меня.

При использовании, отличном от JPA, я бы создал UserType для форматирования UUID в виде строки, которую принимает PostgreSQL, а затем просто указал имя реализации UserType в качестве типа столбца.

вы могли бы попробовать с:

 @Column(name="foo", columnDefinition="uuid") 

где ColumnDefinition - это фрагмент собственного SQL

Возможно, вы можете заставить тип UUID автоматически преобразовываться в строку (uuid.toString() должна предоставлять каноническое представление из 36 символов)?Базы данных обычно надежно преобразуют данные между строками и собственными типами.

Попробуй это

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()")
private String uuid;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top