Galera, estou há varias horas pesquisando e não consegui resolver. Agradeço ajudas.
Quero fazer em JPA a query abaixo que retorna exatemente o que quero do banco de dados.
Como seria o código desse select em JPA?
Segue abaixo como estão modeladas as classes.
Obrigado.
SELECT
USU.CO_SEQ_USUARIO,
USU.NO_USUARIO,
CO.CO_SEQ_CONTA,
CO.NO_CONTA,
TIPCO.NO_TIPO_CONTA,
TIPCO.DS_CONTA
FROM
TB_USUARIO_PORTAL USU,
TB_CONTA CO,
TB_TIPO_CONTA TIPCO
WHERE
CO.CO_SEQ_CONTA=USU.CO_CONTA AND
TIPCO.CO_SEQ_TIPO_CONTA=CO.CO_TIPO_CONTA;
public interface DaoGenerico<T, ID extends Serializable> {
public Class<T> getObjectClass();
//Demais métodos
public List<T> listaContaUsuario();
}
@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
public class DaoGenericoImp<T, ID extends Serializable>
implements DaoGenerico<T, ID> {
//Interface responsável pelas operações de persitência
private EntityManager entityManager;
private final Class<T> oClass;//object class
public Class<T> getObjectClass() {
return this.oClass;
}
@PersistenceContext
public void setEntityManager(EntityManager em) {
this.entityManager = em;
}
protected EntityManager getEntityManager() {
if (entityManager == null)
throw new IllegalStateException("Erro");
return entityManager;
}
@SuppressWarnings("unchecked")
public DaoGenericoImp() {
this.oClass = (Class<T>)
( (ParameterizedType) getClass().getGenericSuperclass() ).getActualTypeArguments()[0];
}
public List<T> listaContaUsuario(){
//Select em JPA.
}
}
@Entity
@Table(name="tb_usuario_portal", schema="ecommerce")
public class UsuarioPortal implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="co_seq_usuario")
private Integer codUsuario;
@Column(name="co_conta")
private Integer codConta;
//Demais atributos
//getters & setters
}
@Entity
@Table(name="tb_conta", schema="ecommerce")
public class Conta implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="co_seq_conta")
private Integer codConta;
@Column(name="co_tipo_conta")
private Integer codTipoConta;
//Demais atributos
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
private Set<UsuarioPortal> usuariosPortal;
//getters & setters
}