Sind JPA (EclipseLink) kundenspezifische Typen möglich?

Insbesondere bin ich daran interessiert, mit PostgreSQLs json geben.

Den Kern des Problems scheint zu sein, dass es keine interne Zuordnung in Eclipselink zu json geben. So, mit einem naiven Ansatz mit:

@Column(name = "json", columnDefinition = "json")
public String getJson() {
    return json;
}

... und versuchen, ein Objekt einfügen, bekomme ich eine exception:

Internal Exception: org.postgresql.util.PSQLException: ERROR: column "json" is of type json but expression is of type character varying

Fair genug, nehme ich an.

Suche durch die EclipseLink docs, scheint es, dass die anwendbaren Anpassungen (Transformation Mappings, Native Queries-Wandler) verlassen sich auf die Daten bis zu der unterstützt-mappings (zahlen, Datumsangaben, strings etc) so macht es dies sehr umständlich zu umgehen, verwenden Hersteller spezielle Typen.

Den wichtigsten Grund, warum das so frustrierend ist, dass json geben Sie in posgresql ausgedrückt ist die gleiche wie die text/varchar-und ich glaube (im moment, aber nicht für immer) ist nur ein alias von dieser Art - daher der Fahrer ist mehr als fähig, die übertragung dieser, es ist nur die Validierung Regeln, die in meinem Weg.

In Bezug auf die Lösung, die ich nicht Verstand zu verlieren Beweglichkeit (in Bezug auf die Allgemeine Datenbank-agnostisch und über herstellerspezifische Typen), sondern wollen einfach nur eine Lösung, die erlaubt mir, auf eine json Typ als Attribut auf ein normales JPA Entity und behalten alle anderen Verhalten, die es gewohnt ist (schema generation, merge, persist, Transaktions-code

  • Ja, gute Frage!
InformationsquelleAutor markdsievers | 2013-12-02
Schreibe einen Kommentar