Использование UUID с EclipseLink и PostgreSQL
Я хочу использовать тип uuid PostgreSQL для объектов первичные ключи. За что ямы создали конвертер (реализующий интерфейс конвертера). Ниже приведен соответствующий код:
@Override
public void initialize(DatabaseMapping mapping, Session session) {
final DatabaseField field;
if (mapping instanceof DirectCollectionMapping) {
field = ((DirectCollectionMapping) mapping).getDirectField();
} else {
field = mapping.getField();
}
field.setSqlType(Types.OTHER);
field.setTypeName("uuid");
field.setColumnDefinition("UUID");
}
Затем я'мы аннотировали соответствующую сущность X нижеуказанными аннотациями:
@Converter(name="uuidConverter",converterCalss=UUIDConverter.class)
@Convert("uuidConverter")
@Id
public UUID getId()
{
return id;
}
Проблема в том, что у меня есть другой класс (Y), который имеет следующее определение:
@ManyToOne(targetEntity = X.class)
@JoinColumn(name = "x_id")
public X getX();
Хотя EclipseLink создал таблицы, как и ожидалось, он отправляет строку в базу данных при попытке вставить объекты типа Y. Postgres возвращает следующее сообщение об ошибке:
column "id" is of type uuid but expression is of type character varying at character
Любые решения / обходные пути будут оценены.