Pregunta

Soy nuevo en EJB y tratando de conseguir mi cabeza alrededor de traducir los conceptos SQL para beans de entidad EJB.

Supongamos que tengo dos tablas: La gente (id, nombre), de contacto (pid, phone_number). Si quiero obtener una lista de todas las personas si tienen o no #s de teléfono, en mi bean de sesión EJB simplemente emitir una consulta SQL a través de JDBC como por ejemplo:

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

En lugar de utilizar SQL / JDBC, ahora quieren utilizar beans de entidad EJB. Así que crean correspondientes clases bean de entidad EJB3 para mis tablas.

Así que ahora tiene acceso a ambas clases de entidad de mi bean de sesión y ya no deseo tener acceso a mis tablas de bases de datos directamente a través de SQL / JDBC de mi bean de sesión. Yo sólo quiero usar mis beans de entidad y capacidades de APP. ¿Cuál es el adecuado diseño de EJB para que en mi bean de sesión, consigo los mismos resultados que mi consulta SQL?

Estoy claro acerca de cómo usar las clases bean entidad EJB para producir los mismos resultados que mi externa de SQL consulta de unión. Ayuda.

¿Fue útil?

Solución

En primer lugar, crear dos entidades JPA, algo así por 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
}

Y para Contact:

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

    @Id @Column
    private Long pid;

    @Column
    private String phoneNumber;

    // getters and setters
}

A continuación, para generar la combinación externa consulta utilizando JPQL:

SELECT p FROM People p LEFT JOIN p.contact c
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top