createNativeQuery?

7 respostas
J

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;
	}

7 Respostas

H

Fica do mesmo modo que você executa no banco de dados.

Aqui mostra como executar uma nativeQuery: JPA Consultas e Dicas

J

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!
PROCEDURE 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 <> 'OD'
                  and r.ds_tipo_rede_atendimento <> 'ODONTOLOGIA';
J

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;
				
	}
M
juniorsatanas:
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;
				
	}

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).

G
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:
J

é UM SISTEMA PARA UM PUTERO !
:-0

J

maior_abandonado OBRIGADO !
Vou refazer !

Criado 2 de julho de 2012
Ultima resposta 4 de jul. de 2012
Respostas 7
Participantes 4