Frage

Ich bin neu in EJB und versucht, meinen Kopf um SQL-Konzepte zu EJB Entity Beans zu übersetzen.

Angenommen, ich habe zwei Tabellen: PEOPLE (id, name), CONTACT (pid, phone_number). Wenn ich eine Liste aller Menschen zu bekommen, ob sie Telefon #s haben, in meiner EJB Session Bean ich einfach eine SQL-Abfrage über JDBC ausgeben wie:

SELECT PEOPLE.name, CONTACT.phone_number 
FROM PEOPLE 
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid

Anstelle der Verwendung von SQL / JDBC, ich möchte jetzt EJB Entity Beans verwenden. Also ich EJB3 Entity-Bean-Klassen für meine Tabellen erstellen entsprechen.

Also ich habe jetzt Zugang zu beiden Entitätsklassen von meinem Session-Bean und ich nicht mehr dem Wunsch meiner Datenbanktabellen über SQL / JDBC aus meinem Session-Bean direkt zuzugreifen. Ich will nur meine Entity Beans und Fähigkeiten der PPV nutzen. Was ist das richtige EJB Design, so dass in meinem Session-Bean, ich die gleichen Ergebnisse wie meine SQL-Abfrage erhalten?

Ich bin unklar, wie die EJB-Entity-Bean-Klassen verwenden, um die gleichen Ergebnisse wie mein SQL-Outer-Join-Abfrage zu erzeugen. Hilfe.

War es hilfreich?

Lösung

Erstellen Sie zunächst zwei JPA-Entitäten, so etwas wie die für People:

@Entity
@Table( name="PEOPLE" )
public class People {

    @Id @Column
    private Long id;

    @Column
    private String name;

    @OneToOne
    @JoinColumn( name="pid" )
    private Contact contact;

    // getters and setters
}

Und für Contact:

@Entity
@Table( name="CONTACT" )
public class Contact {

    @Id @Column
    private Long pid;

    @Column
    private String phoneNumber;

    // getters and setters
}

Dann erzeugen die OUTER JOIN Abfrage JPQL mit:

SELECT p FROM People p LEFT JOIN p.contact c
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top