PostgreSQL Abfrage mit EclipseLink

learningbydoing

Aktives Mitglied
Hallo zusammen,

ich hocke jetzt schon etwas länger an diesem Problem und hoffe das mir vielleicht eine(r) von euch helfen kann.

Mein Problem:
Ich möchte mit EclipseLink Daten aus einer bestehenden Tabelle (mit dem Namen: Translation) einer bestehenden Datenbank auslesen. Leider bekomme ich bei meinem JUnit Test (ich weis den muss man anders aufbauen, aber erstmal für die Funktionalität reicht es) nur einen erfolgreichen Test, aber keinen Output mit den angeforderten Werten. Zudem wird auf der Datenbank einfach eine neue Tabelle (mit dem Namen: translation) erstellt.

Hier der Code:

persistence.xml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="uebersetzungstool_PU" transaction-type="RESOURCE_LOCAL">
        
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>com.mycompany.uebersetzungstool.entity.Translation</class>
        <properties>
            <property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://localhost/postgres"/>
            <property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="jakarta.persistence.jdbc.user" value="postgresuser"/>
            <property name="jakarta.persistence.jdbc.password" value="pwd"/>
            <property name="jakarta.persistence.schema-generation.database.action" value="create"/>
        </properties>
    </persistence-unit>
</persistence>


Translation.java
Java:
package com.mycompany.uebersetzungstool.entity;

import java.io.Serializable;
import jakarta.persistence.*;

@Entity
public class Translation implements Serializable {
    
    @Id
    private int id;
    private String key;
    private String value;
    private String language;
    private String project;
    private String version;
    private String comment;
    private boolean translated;
    private String create_ts;
    private String create_user;
    private String update_ts;
    private String update_user;

    
    public Translation() {
    }

    public Translation(int id, String key, String value, String language, String project, String version, String comment, boolean translated, String create_ts, String create_user, String update_ts, String update_user) {
        this.id = id;
        this.key = key;
        this.value = value;
        this.language = language;
        this.project = project;
        this.version = version;
        this.comment = comment;
        this.translated = translated;
        this.create_ts = create_ts;
        this.create_user = create_user;
        this.update_ts = update_ts;
        this.update_user = update_user;
    }
    
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String getProject() {
        return project;
    }

    public void setProject(String project) {
        this.project = project;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public boolean isTranslated() {
        return translated;
    }

    public void setTranslated(boolean translated) {
        this.translated = translated;
    }

    public String getCreate_ts() {
        return create_ts;
    }

    public void setCreate_ts(String create_ts) {
        this.create_ts = create_ts;
    }

    public String getCreate_user() {
        return create_user;
    }

    public void setCreate_user(String create_user) {
        this.create_user = create_user;
    }

    public String getUpdate_ts() {
        return update_ts;
    }

    public void setUpdate_ts(String update_ts) {
        this.update_ts = update_ts;
    }

    public String getUpdate_user() {
        return update_user;
    }

    public void setUpdate_user(String update_user) {
        this.update_user = update_user;
    }
            
    
}

DatabaseConnectionTest.java -> JUnit Test
Java:
import com.mycompany.uebersetzungstool.entity.Translation;
import org.junit.jupiter.api.Test;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import java.util.List;


public class DatabaseConnectionTest {

    @Test
    public void connectionTest() {
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("uebersetzungstool_PU");
            EntityManager em = emf.createEntityManager();

            List<Translation> translations = em.createNativeQuery("SELECT t FROM Translation t", Translation.class).getResultList();

            for (Translation translation : translations) {
                System.out.println(translation.getProject() + " " + translation.getVersion());
            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

Vielen Dank schon einmal im Voraus!
 

Anhänge

  • JUnit-Test.png
    JUnit-Test.png
    7,1 KB · Aufrufe: 1

LimDul

Top Contributor
Naja, du fragst die tabelle Translation ab. Und sagst in der persistence.xml "create". Das heißt, wenn die Tabelle nicht da ist, wird sie angelegt. Dann liest du Daten aus der Tabelle aus. Wenn nichts drin ist, kommt auch nichts zurück.

Was exakt würdest du denn warum als Ausgabe erwarten?
 

learningbydoing

Aktives Mitglied
Naja, du fragst die tabelle Translation ab. Und sagst in der persistence.xml "create". Das heißt, wenn die Tabelle nicht da ist, wird sie angelegt. Dann liest du Daten aus der Tabelle aus. Wenn nichts drin ist, kommt auch nichts zurück.

Was exakt würdest du denn warum als Ausgabe erwarten?
Danke LimDul für deine schnelle Nachricht!:D

Das mit dem Create habe ich gerade auch schon herausgefunden. -> Habe die Zeile in der persistence.xml mal rausgelöscht.

Die vorhandene Tabelle Translation in meiner PostgreSQL ist 1:1 wie die Translation Klasse aufgebaut. Dort sind die verschiedenen Variablen aufgezeigt die ich auch erhalten möchte.
 

learningbydoing

Aktives Mitglied
Jetzt bekomme ich ein neues Fehlerbild:
Code:
Running DatabaseConnectionTest
[EL Info]: 2023-02-21 12:06:07.972--ServerSession(50503805)--EclipseLink, version: Eclipse Persistence Services - 4.0.0.v202210051929
[EL Warning]: 2023-02-21 12:06:08.77--UnitOfWork(244577237)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.0.v202210051929): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FEHLER: Relation »translation« existiert nicht
  Position: 125
Error Code: 0
Call: SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM TRANSLATION
Query: ReadAllQuery(referenceClass=Translation sql="SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM TRANSLATION")
Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.0.v202210051929): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FEHLER: Relation »translation« existiert nicht
  Position: 125
Error Code: 0
Call: SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM TRANSLATION
Query: ReadAllQuery(referenceClass=Translation sql="SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM TRANSLATION")
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.927 s - in DatabaseConnectionTest

Results:

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time:  7.134 s
Finished at: 2023-02-21T12:06:09+01:00
------------------------------------------------------------------------
 

learningbydoing

Aktives Mitglied
Hm, das hört sich plausibel an. Habe es mal angewendet doch leider versucht es wieder auf die nicht vorhandene "translation" anstatt "Translation" Tabelle zuzugreifen.🙁

Code:
Running DatabaseConnectionTest
[EL Info]: 2023-02-21 12:14:48.9--ServerSession(1865219266)--EclipseLink, version: Eclipse Persistence Services - 4.0.0.v202210051929
[EL Warning]: 2023-02-21 12:14:49.745--UnitOfWork(1091736037)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.0.v202210051929): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FEHLER: Relation »translation« existiert nicht
  Position: 125
Error Code: 0
Call: SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM Translation
Query: ReadAllQuery(referenceClass=Translation sql="SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM Translation")
Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.0.v202210051929): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: FEHLER: Relation »translation« existiert nicht
  Position: 125
Error Code: 0
Call: SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM Translation
Query: ReadAllQuery(referenceClass=Translation sql="SELECT ID, COMMENT, CREATE_TS, CREATE_USER, KEY, LANGUAGE, PROJECT, TRANSLATED, UPDATE_TS, UPDATE_USER, VALUE, VERSION FROM Translation")
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.451 s - in DatabaseConnectionTest

Results:

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time:  10.074 s
Finished at: 2023-02-21T12:14:50+01:00
------------------------------------------------------------------------

Java:
@Entity
@Table(name="Translation")
public class Translation implements Serializable {

1676978320968.png
 

LimDul

Top Contributor
Dann bin ich jetzt auch quasi ratlos.

Hier mal ein Stackoverflow Link: https://stackoverflow.com/questions...getting-relation-does-not-exist-when-querying

Bist du dir sicher, dass der User, der in der persistence.xml hinterlegt ist, auch so auf die Tabelle zugreifen darf? (Ohne Schema-Name?)

Ist jetzt aber mehr stochern im Nebel von mir, weil ich keine Postgres Erfahrung habe. Ggf. mal mit dem User einloggen und exakt das query absetzen. Du kannst auch in der persistence.xml das log level hochsetzen, dann siehst du exakten Queries, die abgesetzt werden. Und die kannst du dann prüfen.
 

learningbydoing

Aktives Mitglied
Dann bin ich jetzt auch quasi ratlos.

Hier mal ein Stackoverflow Link: https://stackoverflow.com/questions...getting-relation-does-not-exist-when-querying

Bist du dir sicher, dass der User, der in der persistence.xml hinterlegt ist, auch so auf die Tabelle zugreifen darf? (Ohne Schema-Name?)

Ist jetzt aber mehr stochern im Nebel von mir, weil ich keine Postgres Erfahrung habe. Ggf. mal mit dem User einloggen und exakt das query absetzen. Du kannst auch in der persistence.xml das log level hochsetzen, dann siehst du exakten Queries, die abgesetzt werden. Und die kannst du dann prüfen.
Ok, vielen Dank!
Ja, der User hat alle Privileges. Dann muss ich nochmal weiter schauen☹️
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
G PostGreSQL - Die Abfrage lieferte kein Ergebnis Datenbankprogrammierung 3
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
Husamoli345 JSF Postgresql DatabaseConnection Datenbankprogrammierung 1
D hibernate mit postgreSQL Datenbankprogrammierung 3
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
Ghostman1711 PostgreSQL Lock Row Exclusive Mode Transaktionsblock Datenbankprogrammierung 0
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
E Java und Postgresql Datenbankprogrammierung 8
F PostgreSQL Hibernate & PostgreSQL Datenbankprogrammierung 3
S JBoss und PostgreSQL DB Datenbankprogrammierung 3
J Mit Java Programm - PostgreSQL backup und restore Datenbankprogrammierung 5
B JDBC Verbindung mit Postgresql Datenbankprogrammierung 13
D PostgreSQL vs Firebird vs Derby Datenbankprogrammierung 12
S PostgreSQL Datenbankstruktur exportieren und importieren Datenbankprogrammierung 2
V PostgreSQL langsam (Blob) Datenbankprogrammierung 10
D PostgreSQL Von JTable -> Datenbank Datenbankprogrammierung 6
N csv datei in PostgreSQL datenbank einlesen Datenbankprogrammierung 1
B fehlerhafte PostgreSQL-Verbindung Datenbankprogrammierung 4
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
S PostgreSQL Verbindung kommt nicht zu stande Datenbankprogrammierung 3
S Postgresql DB - Performancetest - Programm, Logfile etc. Datenbankprogrammierung 2
G Postgresql Datenbankprogrammierung 5
T PostgreSQL db Datenbankprogrammierung 5
T Treiber laden PostgreSQL Datenbankprogrammierung 3
Z jdbc-Verbundung unter Windows zur Postgresql DB sehr langsam Datenbankprogrammierung 3
B hibernate - postgresql - Sequenz setzen Datenbankprogrammierung 3
M Zugriff auf PostgreSQL mit JAva! Datenbankprogrammierung 7
H logging von postgresql statements Datenbankprogrammierung 5
F MySQL / PostgreSQL: Verschlüsselung Datenbankprogrammierung 3
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
S Berechnung des Datumsunterschieds in der SQL-Abfrage Datenbankprogrammierung 1
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
nonickatall MySQL SQL Abfrage erneut ausführen oder rs aktualisieren Datenbankprogrammierung 14
Kirby.exe Verständnisproblem bei SQL Abfrage Datenbankprogrammierung 27
N SQL-Abfrage in JTextField ausgeben Datenbankprogrammierung 6
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
W MySQL DB Abfrage in Array, gemischte Array, generelles vorgehen Datenbankprogrammierung 4
D SQL Abfrage optimieren Datenbankprogrammierung 35
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
D Regelmäßige Abfrage aus Workbench Datenbankprogrammierung 6
M SQL-Statement Hilfe bei SQL-Abfrage Datenbankprogrammierung 2
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
M MySQL Anbindung und Abfrage an die Datenbank Datenbankprogrammierung 2
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
E Abfrage auf HSQLDB Datenbankprogrammierung 4
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
S SQL Abfrage Datenbankprogrammierung 2
F Abfrage der letzten Einträge Datenbankprogrammierung 2
J SELECT Abfrage/Suche Datenbankprogrammierung 4
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
OnDemand SQL Abfrage und Equals Datenbankprogrammierung 4
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
M MySQL MySQLSyntaxError in Java, obwohl Abfrage in HeidiSQL korrekt Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
L SQL-Abfrage bricht vor dem Ende ab Datenbankprogrammierung 2
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Derby/JavaDB Komplexe Abfrage vereinfachen Datenbankprogrammierung 2
S SQL-Abfrage, Filewriter .txt Datei Datenbankprogrammierung 2
P Datenbank- Abfrage mit null'en Datenbankprogrammierung 2
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
D MySQL Erstellen der richtigen Abfrage Datenbankprogrammierung 3
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
D JDBC insert mit select abfrage Datenbankprogrammierung 5
E PostgreSQL Exception too ...many clients already bei DB-Abfrage Datenbankprogrammierung 14
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
H JSON Array abfrage beschleunigen Datenbankprogrammierung 2
S MySQL Abfrage: Wenn Feld leer, alles anzeigen Datenbankprogrammierung 5
Mrtwomoon Abfrage-Ergebnisse in einem Fenster darstellen Datenbankprogrammierung 8
0 SQL Abfrage Bestellung Datenbankprogrammierung 15
G SQLite SQLite Abfrage Datenbankprogrammierung 4
C Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException Datenbankprogrammierung 4
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
B My-SQL Abfrage - Out Of Memory Error Datenbankprogrammierung 13
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
K SQLite Einfache DB-Abfrage Datenbankprogrammierung 2
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
C Sortierung bei SQL-Abfrage Datenbankprogrammierung 3
B Bei Abfrage schießt der Speicher in die Höhe Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben