Hibernate Entitäten bei Selects aus 2 Tabellen

N

nieselfriem

Bekanntes Mitglied
Hallo,

ich habe ein wenig ein Verständnisproblem bei Hibernate bzw bei ORM allgemein. Wenn ich eine Selection von einer Tabelle mache wie z.B. ich will alle Rechnungen haben die größer sind als 5000 €. Dann mache ich in etwa das hier.

Java:
Query query = session.createQuery("from rechnung where betrag > 5000");
Somit bekomme ich ein Rechnungsobjekt(e) zurück und alles ist fein und ich kann damit arbeiten.

Wie läuft das bei SQL Anfragen in etwa wie dieser:

SQL:
SELECT r.id, r.rechnungsNummer, r.datum, r.betrag, f.name FROM rechnung r, firma f WHERE
r.firma_id = f.id


Hier habe ich ja Daten aus zwei Entitäten. Wie wird dann "gemappt" und was bekomme ich da für ein Objekt zurück?

VG Georg
 
Thallius

Thallius

Top Contributor
Hallo,

ich habe ein wenig ein Verständnisproblem bei Hibernate bzw bei ORM allgemein. Wenn ich eine Selection von einer Tabelle mache wie z.B. ich will alle Rechnungen haben die größer sind als 5000 €. Dann mache ich in etwa das hier.

Java:
Query query = session.createQuery("from rechnung where betrag > 5000");
Somit bekomme ich ein Rechnungsobjekt(e) zurück und alles ist fein und ich kann damit arbeiten.

Wie läuft das bei SQL Anfragen in etwa wie dieser:

SQL:
SELECT r.id, r.rechnungsNummer, r.datum, r.betrag, f.name FROM rechnung r, firma f WHERE
r.firma_id = f.id


Hier habe ich ja Daten aus zwei Entitäten. Wie wird dann "gemappt" und was bekomme ich da für ein Objekt zurück?

VG Georg

es ist übrigens eine Unsitte einen join so zu schreiben. Man sollte immer richtig joinen damit auch klar ist welchen join typ man erwartet
 
L

LimDul

Top Contributor
Hallo,

ich habe ein wenig ein Verständnisproblem bei Hibernate bzw bei ORM allgemein. Wenn ich eine Selection von einer Tabelle mache wie z.B. ich will alle Rechnungen haben die größer sind als 5000 €. Dann mache ich in etwa das hier.

Java:
Query query = session.createQuery("from rechnung where betrag > 5000");
Somit bekomme ich ein Rechnungsobjekt(e) zurück und alles ist fein und ich kann damit arbeiten.

Wie läuft das bei SQL Anfragen in etwa wie dieser:

SQL:
SELECT r.id, r.rechnungsNummer, r.datum, r.betrag, f.name FROM rechnung r, firma f WHERE
r.firma_id = f.id


Hier habe ich ja Daten aus zwei Entitäten. Wie wird dann "gemappt" und was bekomme ich da für ein Objekt zurück?

VG Georg
Warum nicht einfach nur die Rechnungen selektieren? Die haben ja die Firma eh als Attribut.
 
N

nieselfriem

Bekanntes Mitglied
OK. ich habe es im ansatz verstanden was da gemacht wird. Nur leider bin ich offenbar zu doof um herauszufinden wo ich dieses Mapping definiere, so dass es gefunden wird. Kommt es in die Funktion, die das Quer ausführt, kommt es in eine extra Klasse. Das habe ich bisher noch nicht raus gefunden.

folgendes geht nicht:. Da meckert die IDE gleich, dass es hier nicht hin gehört
Java:
public class TolleKlasse {
   public void Methode() {
      @SqlResultSetMapping(
            name="supermapping"

      )
   }
}

hier meckert die IDE nicht aber beim ausführen von Hibernate bekomme ich den Fehler Unknown SqlResultSetMapping [RechnungFirmaMapping]
Java:
@SqlResultSetMapping(
       name="supermapping"

      )
public class TolleKlasse {
   public void Methode() {

   }
}

Mein erstelltes Mapping sieht bisher so aus.

Java:
@SqlResultSetMapping(
        name="RechnungFirmaMapping",
        entities = {
                @EntityResult(
                        entityClass = Firma.class,
                        fields = {
                                @FieldResult(name="name", column = "name")
                        }
                ),
                @EntityResult(
                        entityClass = Rechnung.class,
                        fields = {
                                @FieldResult(name="id", column = "id"),
                                @FieldResult(name="name", column = "name"),
                                @FieldResult(name="rechnungsNummer", column = "rechnungsNummer"),
                                @FieldResult(name="datum", column = "datum"),
                                @FieldResult(name="betrag", column = "betrag"),
                        }
                ),
        }
)

Da es sich um Annotation handelt müsste es ja wahrscheinlichen eine der Entity-Klassen gehören. Falls dem so ist nur die Frage, in die der Rechnung oder der Firma.
Bin etwas konfus. Ein vollständiges Beispiel wo man mal den ganzen Code sehen könnte wäre schon cool. Ich habe bisher nur Anleitungen mit einzelnen Codefragmenten gefunden. ;)

Vielen Dank für die Mühe

VG Georg
 
Zuletzt bearbeitet:
O

Oneixee5

Aktives Mitglied
Eigentlich ist das gar nicht so schwer. Ich würde das SqlResultSetMapping dort definieren, wo auch die Query definiert ist, welche das SqlResultSetMapping verwenden soll. Beim SqlResultSetMapping gibt es sehr viele Möglichkeiten. Diese alle hier zu erklären würde den hier verfügbaren Rahmen sprengen. Hier kann dir auch keiner abnehmen die Dokumentation zu durchforsten. Dir muss erst mal klar sein wie dein(e) Zielobjekt(e) aussehen sollen, danach richtet sich das Mapping. Dein Zielobjekt muss dabei nicht zwingen von einer Entity-Klasse sein. Willst du mehrere Objekte per SqlResultSetMapping erzeugen (also in einer Row) ist der Rückabetyp Object[], darin sind dann deine Mappingtypen enthalten.
 
O

Oneixee5

Aktives Mitglied
Warum nicht einfach nur die Rechnungen selektieren? Die haben ja die Firma eh als Attribut.
Das ist nicht immer eine gute Idee, evtl. werden dann 2 Abfragen ausgeführt wenn die Firma abgefragt wird. Möglicherweise eignet sich das Object für Rechnungen auch nicht als DTO. Über die Gründe für das Vorgehen kann hier nur spekuliert werden, diese sind auch nicht Bestandteil der Frage.
 
L

LimDul

Top Contributor
Das ist nicht immer eine gute Idee, evtl. werden dann 2 Abfragen ausgeführt wenn die Firma abgefragt wird. Möglicherweise eignet sich das Object für Rechnungen auch nicht als DTO. Über die Gründe für das Vorgehen kann hier nur spekuliert werden, diese sind auch nicht Bestandteil der Frage.
Wenn ich immer nur die Fragen beantworten würde, die gestellt werden - wäre ich kein guter Entwickler. Den (und da deutet die Frage drauf hin), ist der Thread-Ersteller nicht der Experte. Ob das eine gute Lösung ist - weiß ich nicht. Aber man sollte sie kennen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NicoDeluxe Hibernate Realationen Datenbankprogrammierung 7
NicoDeluxe Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
NicoDeluxe MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
NicoDeluxe Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
sla89 [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15
Z JPA mit Hibernate - Unable to build EntityManagerFactory Datenbankprogrammierung 7
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
K Hibernate vs. JDBC Datenbankprogrammierung 4
J Hibernate Info 593 ? Datenbankprogrammierung 4
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
N hibernate: datasource Datenbankprogrammierung 7
H MySQL Hibernate: Updaten vereinfachen Datenbankprogrammierung 2
T Hibernate Division zweier Summen Datenbankprogrammierung 4
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
F GWT und Hibernate - gwt.dev.Compler not found Datenbankprogrammierung 3
M NestedTransaction- Exception in Hibernate Datenbankprogrammierung 15
O Löschen vieler Datensätze mit Hibernate Datenbankprogrammierung 11
C Hibernate n:m mittels Zwischentabelle und bidirektionaler Zugriff Datenbankprogrammierung 2
D JPA (Hibernate) : Tabelle zweimal joinen Datenbankprogrammierung 4
C Hibernate Datensatz löschen Datenbankprogrammierung 2
C Hibernate n:m + Zwischentabellenfeld Datenbankprogrammierung 8
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
N Hibernate-Anfänger Datenbankprogrammierung 14
T Anbindung von Hibernate an JSP Datenbankprogrammierung 6
C Hibernate Datensätze finden Datenbankprogrammierung 17
Crashbreaker MySQL MySQL - Hibernate gibt Fehler aus Datenbankprogrammierung 25
G Hibernate Abhängigkeiten mitlöschen Datenbankprogrammierung 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben