Ergebnis 1 bis 8 von 8

Thema: Problem using JPA + PostGIS Datatypes

  1. #1
    Philipp.Abromeit ist offline Neuer Benutzer
    Registriert seit
    10.02.2010
    Beiträge
    4

    Standard Problem using JPA + PostGIS Datatypes

    Hallo!
    Ich möchte eine Entity, die einen PostGIS Point enthält gerne über die JPA persistieren. Es sieht jedoch so aus, also ob Postgres den Datentyp nicht akzeptiert. Ich habe also einen Converter geschrieben, der es mir ermöglicht (genauere Beschreibung meines Vorgehens: Re: [eclipselink-users] eclipseLink + PostGIS datatypes) den Point in einen Postgres Point zu konvertieren. Leider reicht mir der Postgres Point Datentyp nicht aus, da er keine Möglichkeit bietet eine "Srid" hinzuzufügen. Ich würde mich freuen, wenn jemand eine Idee hat, woran die Persistierung scheitert. Alles deutet darauf hin, dass entweder auf Java ebene nicht der richtige JDBC-Treiber verwendet wird, oder die DB, trotz Installation von PostGIS die Persistierung nicht erlaubt. Ich nutze glassfishV3 using PostGres8.3+PostGis 1.3.6.

    Gruß Philipp

    Der Momentane Fehler lautet:
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DatabaseExcepti on
    Internal Exception: org.postgresql.util.PSQLException: FEHLER: Spalte »test« hat Typ point, aber der Ausdruck hat Typ bytea
    Hinweis: Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen.
    Position: 41
    Error Code: 0
    Call: INSERT INTO test (id, test) VALUES (?, ?)
    bind => [7951, [B@87c962]
    Query: InsertObjectQuery(entity.Test[id=7951])

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Nun, Java ist mir schon immer ein Gräuel gewesen, jetzt weiß ich wieder, warum ;-)

    Kannst du ihm in Java sagen, dass du da einen Typ "point" hast? Weil Java übermittels das als "bytea".
    Alternativ kannst du den Typ vielleicht als Types.OTHER angeben ...
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    Philipp.Abromeit ist offline Neuer Benutzer
    Registriert seit
    10.02.2010
    Beiträge
    4

    Standard

    Also, da ich die JPA benutze, wird die Typisierung durch den Java-Datentyp vorgenommen, den ich der Variable gebe und Java bietet keinen Datentyp "Other" an ;-). Ich gebe also innerhalb meiner Entity-Klasse den Typ vor, der dann über JDBC an die DB übermittelt wird. Ich bräuchte also Hilfe in diesem Java spezifischen Fall. Falls es in dieser Hinsicht Erfahrungen gibt...

  4. #4
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    493

    Standard

    Zitat Zitat von Philipp.Abromeit Beitrag anzeigen
    Java bietet keinen Datentyp "Other" an ;-).
    Doch tut es:
    OTHER
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  5. #5
    Philipp.Abromeit ist offline Neuer Benutzer
    Registriert seit
    10.02.2010
    Beiträge
    4

    Standard

    Hi.
    zitat: "constants(!) that are used to identify generic SQL types"(kein Java Datentyp) + "gets mapped to a Java object".
    Ich denke, wir reden von verschiedenen Dingen. Ich will die JPA benutzen und keine native queries.
    Das Problem nocheinmal kurz zusammengefasst:

    Ich will über den EntityManager ein neues Entity in die DB schreiben. Dabei ergibt sich ein Fehler, da ich in der Klasse einen PostGIS Datentyp verwende und anscheinend hier ein Postgres point erwartet wird. Ich habe schon alle denkbaren konfigurationen aus verschiedenen wrapper Klassen verwandt, die den Postgres JDBC-Treiber wrappen sollen, aber es ändert sich nichts. Das Problem kann detailierter auf der bereits geposteten Seite nachvollzogen werden (Re: [eclipselink-users] eclipseLink + PostGIS datatypes).

    Herzlichen Dank für jede mögliche Idee.
    Gruß Philipp

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Ich habe den Hinweis mit OTHERS auch nur von einem Bekannten, der auf diesem Weg sein Problem damit gelöst hat.
    Letzten Endes versuchst du ja einen unbekannten (also ggf. "anderen") Datentyp in der Datenbank anzusprechen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    Philipp.Abromeit ist offline Neuer Benutzer
    Registriert seit
    10.02.2010
    Beiträge
    4

    Standard

    Danke für den Hinweis, würde mich interessieren, wie dein Bekannter das benutzt hat. Falls es möglich ist an eine brauchbare Beschreibung zu kommen. Mir ist nämlich unklar, wie das mein Problem löst bzw. wie man OTHERS anwenden kann, um das Problem zu lösen. Normalerweise kann man, wenn man "händisch" ein "Statement" erstellt setObject() mit Types.OTHER benutzen, aber das ist nicht mein Problem... Das Mapping soll über den EntityManager (transparent beim Persist) geschehen.

    Gruß Philipp

  8. #8
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Nun ja, da waren sie wieder, die 3 Probleme. Eines davon ist das automatisierte Mappen ...
    Sorry, damit habe ich mich nicht tiefgreifend genug beschäftigt, um da etwas sagen zu können. Solche Projekte sind mir bisher nicht über den Weg gelaufen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum