Używanie UUID z EclipseLink i PostgreSQL

Chcę użyć typu uuid PostgreSQL dla kluczy podstawowych obiektów. W tym celu stworzyłem konwerter (implementujący interfejs konwertera). Poniżej znajduje się odpowiedni kod:

    @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");
    }

Następnie opatrzyłem adnotacją odpowiedni element X z poniższymi adnotacjami:

@Converter(name="uuidConverter",converterCalss=UUIDConverter.class)
@Convert("uuidConverter")
@Id
public UUID getId()
{
    return id;
}

Problem polega na tym, że mam inną klasę (Y), która ma następującą definicję:

@ManyToOne(targetEntity = X.class)
@JoinColumn(name = "x_id")
public X getX();

Chociaż EclipseLink stworzył tabele zgodnie z oczekiwaniami, wysyła ciąg do bazy danych podczas próby wstawienia obiektów typu Y. Postgres zwraca następujący komunikat o błędzie:

column "id" is of type uuid but expression is of type character varying at character

Wszelkie rozwiązania / praca będą mile widziane.

questionAnswers(5)

yourAnswerToTheQuestion