Hebert_Coelho 2 de jul. de 2012
Fica do mesmo modo que você executa no banco de dados.
Aqui mostra como executar uma nativeQuery: JPA Consultas e Dicas
juniorsatanas 2 de jul. de 2012
Bom Dia uaiHebert... massa o site !
Tem muito exemplo. Obrigado !
o que eu quero fazer já fiz mas foi em PLSQL oracle :
Mas agora quero trazer para dentro do meu sistema !
Da para fazer isso ? observa que tem uma view no meio do SELECT com condições!
PROC EDURE selecionaUsuario ( pIdSessao IN VARCHAR2 DEFAULT NULL ,
pContrato IN VARCHAR2 default '0' ,
pNu_Cpf IN VARCHAR2 default '0'
) IS
vIdSessao sessao_sec_web.id_sessao % type ;
aux number default 0 ;
auxDep number default 0 ;
cursor filtroCpf is
-- colocada para tirar tipo de atendimento odontologia
select u.nm_pessoa_razao_social_u
, u.cd_usuario
, u.fl_tipo_pessoa_u
from vw_usuarios u
, tb_tipo_rede_atendimento r
, tb_plano_pai pp
, tb_plano p
where
u.nu_cgc_cpf_t = to_number ( pNu_Cpf )
and u.fl_status_usuario = 2
and p.cd_plano = u.cd_plano
and pp.cd_plano_pai = p.cd_plano_pai
and r.cd_tipo_rede_atendimento = pp.cd_tipo_rede_atendimento
and pp.cd_tipo_rede_atendimento & lt ;> 'OD'
and r.ds_tipo_rede_atendimento & lt ;> 'ODONTOLOGIA';
juniorsatanas 2 de jul. de 2012
Funciona quando é uma tabela somente :
@Override
public StatusDigitalUsuarioPlano getStatusDigital ( String cpfCnpj ) {
Query query = entityManager
. createNamedQuery ( "StatusDigitalUsuarioPlano.listarStatusPorNomePessoa" );
query . setParameter ( "cpfCnpj" , cpfCnpj );
Object result = null ;
try {
result = query . getSingleResult ();
} catch ( NoResultException e ) {
// nada a fazer
}
return result == null ? null : ( StatusDigitalUsuarioPlano ) result ;
}
NÃO FUNCIONA QUANDO É USANDO A TABELA COM A VIEW:
@Override
public VwUsuarios getValidaUsuarios ( String nuCgcCpf ) {
Query query = entityManager
. createNativeQuery ( "u.nm_pessoa_razao_social_u,u.cd_usuario,u.fl_tipo_pessoa_u " +
"from vw_usuarios u,tb_tipo_rede_atendimento r,tb_plano_pai pp,tb_plano p " +
"where u.nu_cgc_cpf_t = nuCgcCpf and u.fl_status_usuario = 2 and p.cd_plano = u.cd_plano and" +
" pp.cd_plano_pai = p.cd_plano_pai and r.cd_tipo_rede_atendimento = pp.cd_tipo_rede_atendimento and " +
"pp.cd_tipo_rede_atendimento <> 'OD' and r.ds_tipo_rede_atendimento <> 'ODONTOLOGIA'" );
query . setParameter ( "nuCgcCpf" , nuCgcCpf );
Object result = null ;
try {
result = query . getSingleResult ();
} catch ( NoResultException e ) {
// nada a fazer
}
return null ;
}
maior_abandonado 4 de jul. de 2012
juniorsatanas:
Funciona quando é uma tabela somente :
@Override
public StatusDigitalUsuarioPlano getStatusDigital ( String cpfCnpj ) {
Query query = entityManager
. createNamedQuery ( & quot ; StatusDigitalUsuarioPlano . listarStatusPorNomePessoa & quot ;);
query . setParameter ( & quot ; cpfCnpj & quot ;, cpfCnpj );
Object result = null ;
try {
result = query . getSingleResult ();
} catch ( NoResultException e ) {
// nada a fazer
}
return result == null ? null : ( StatusDigitalUsuarioPlano ) result ;
}
NÃO FUNCIONA QUANDO É USANDO A TABELA COM A VIEW:
@Override
public VwUsuarios getValidaUsuarios ( String nuCgcCpf ) {
Query query = entityManager
. createNativeQuery ( & quot ; u . nm_pessoa_razao_social_u , u . cd_usuario , u . fl_tipo_pessoa_u & quot ; +
& quot ; from vw_usuarios u , tb_tipo_rede_atendimento r , tb_plano_pai pp , tb_plano p & quot ; +
& quot ; where u . nu_cgc_cpf_t = nuCgcCpf and u . fl_status_usuario = 2 and p . cd_plano = u . cd_plano and & quot ; +
& quot ; pp . cd_plano_pai = p . cd_plano_pai and r . cd_tipo_rede_atendimento = pp . cd_tipo_rede_atendimento and & quot ; +
& quot ; pp . cd_tipo_rede_atendimento & lt ; & gt ; 'OD' and r . ds_tipo_rede_atendimento & lt ; & gt ; 'ODONTOLOGIA' & quot ;);
query . setParameter ( & quot ; nuCgcCpf & quot ;, nuCgcCpf );
Object result = null ;
try {
result = query . getSingleResult ();
} catch ( NoResultException e ) {
// nada a fazer
}
return null ;
}
quando você for usar createNativeQuery, você deve colocar na string que passa para este método exatamente a mesma query que você rodaria via sql ou nesse caso dentro da sua procedure, com a palavra "select" antes... e nesse caso vai usar o nome do jeito que está nas colunas do banco de dados, não como está na sua classe de entidade (que não necessariamente são iguais, aliás não deveriam se for seguir padronizações como camelCase no seu fonte e padronizações nos nomes das colunas na base).
gambazinho 4 de jul. de 2012
juniorsatanas:
BOM DIA !
Aqui é o melhor lugar para perguntar isso...
Tenho uma tb_homosexual e View_prostitutas
Tenho na tabela um campo chamado X e na View o mesmo campo X !
Como ficaria o SELEC usando createNativeQuery, e como ficaria o relacionamento 1 para 1 ? Preciso relacionar ?
Estou com uma dúvida nisso !
Pois no meu :
public class homosexuaisRepositoryBean
public Vw_Prostitutas getValidaHomosexuais(String nuCgcCpf) {
Query query = entityManager.createNativeQuery
return null;
}
que sistema é esse, mestre? getValidaHomosexuais :shock:
juniorsatanas 4 de jul. de 2012
é UM SISTEMA PARA UM PUTERO !
:-0
juniorsatanas 4 de jul. de 2012
maior_abandonado OBRIGADO !
Vou refazer !