Domanda

Sono nuovo di EJB e cercando di ottenere la mia testa intorno tradurre concetti SQL per entity bean EJB.

Supponiamo che io ho due tabelle: persone (id, nome), contatto (PID, PHONE_NUMBER). Se voglio ottenere un elenco di tutte le persone anche se non hanno #s telefono, nella mia session bean EJB ho semplicemente esegue una query SQL tramite JDBC come ad esempio:

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

Invece di usare SQL / JDBC, io ora voglio usare EJB bean di entità. Così creo il corrispondente classi bean di entità EJB3 per le mie tabelle.

Così ora ho accesso a entrambe le classi di entità dal mio session bean e non ho più desidero accedere alle mie tabelle di database direttamente tramite SQL / JDBC dal mio session bean. Ho solo voglia di usare i miei fagioli e le capacità di JPA entità. Qual è il disegno EJB corretto in modo che nella mia session bean, ottengo gli stessi risultati come il mio query SQL?

Sono poco chiare su come utilizzare le classi entità bean EJB per produrre gli stessi risultati come il mio esterno join SQL query. Aiuto.

È stato utile?

Soluzione

In primo luogo, creare due entità JPA, qualcosa di simile per 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
}

E per Contact:

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

    @Id @Column
    private Long pid;

    @Column
    private String phoneNumber;

    // getters and setters
}

Quindi, per generare l'OUTER JOIN query utilizzando JPQL:

SELECT p FROM People p LEFT JOIN p.contact c
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top