Consulta EJB alguém ajuda? [RESOLVIDO]

12 respostas
Alberto_Cerqueira

Alguém pode me ajudar a criar uma consulta EJB???

CFOP

@Column(name="codcfop")
	private Long codCFOP;

POJO ERPCfop

@ManyToOne
	@JoinColumn(name = "ID_CFOP", nullable = false)
	private CFOP cfop;

Query JPA

public static final String BUSCAR_ERPCFOP_BY_TIPO = "Select s from ERPCfop s where s.cdEmpresa = :cdEmpresa and s.cfop.codCFOP like :cfop.codCFOP";

Preciso pegar o código cfop pela tabela ERPCfop.
Alguém tem alguma ideia de como faz???

12 Respostas

Hebert_Coelho

Esse seu código exibe alguma mensagem de erro?

Alberto_Cerqueira

Não

Tipo é usado para listagem na tela^^

Preciso de uma consulta que tenha os valores de cofCfop começando com 5

criei outra mais não sei se dar certo pois não posso testa-lo, isto é implementado em uma classe de busca.

public static final String BUSCAR_ERPCFOP_BY_TIPO = "Select s from ERPCfop s where s.cdEmpresa = :cdEmpresa and s.cfop.codCFOP like %5";
Hebert_Coelho

Alberto Cerqueira:
Não

Tipo é usado para listagem na tela^^

Preciso de uma consulta que tenha os valores de cofCfop começando com 5

criei outra mais não sei se dar certo pois não posso testa-lo, isto é implementado em uma classe de busca.

public static final String BUSCAR_ERPCFOP_BY_TIPO = "Select s from ERPCfop s where s.cdEmpresa = :cdEmpresa and s.cfop.codCFOP like %5";

Parece que ta certo. Quando vc testar, caso dê algum erro, você fala o que aconteceu.

Hebert_Coelho

Só uma observação, eu acho que seu like tem que ser 5% e não %5.

Big_E
Isso vai te retornar uma lista do objeto ERPCfop, onde o código que você deseja já vai estar preenchido segundo o mapeamento que fez com o hibernate.
Então ao percorrer a lista e acessar os objetos basta realizar a chamada ao get()... é isso mesmo que você quer, ou entendi errado rsrs

Isso vai te retornar uma lista do objeto ERPCfop, onde o código que você deseja já vai estar preenchido segundo o mapeamento que fez com o hibernate.
Então ao percorrer a lista e acessar os objetos basta realizar a chamada ao get()… é isso mesmo que você quer, ou entendi errado rsrs

Alberto_Cerqueira

Big E

então cara.

Preciso retorna uma lista de CFOP que comecem com 5.
Porém eu tenho que puxar o codigo pela classe ERPCfop.

Classe IERPCfopFinder

public List<ERPCfop> buscarERPCfopByTipo() throws ObjectNotFoundException;

Classe ERPCfopFinder

@Override
	public List<ERPCfop> buscarERPCfopByTipo() {
		Query query = em.createQuery(ERPCfopSQL.BUSCAR_ERPCFOP_BY_TIPO);
		query.setParameter("cdEmpresa", CodEmpresaHolder.get());
		@SuppressWarnings("unchecked")
		List<ERPCfop> erpCfop = (List<ERPCfop>) query.getResultList();
		return erpCfop;
	}

Classe Buscador

public JSONReturn buscarERPCfopByTipoForaEstado(ServletRequest request, ServletResponse response) throws ObjectNotFoundException{
		List<ERPCfop> erpCfop = erpCfopFinder.buscarERPCfopByTipo();
		JSONReturn jsonReturn = JSONReturn.newInstance(Consequence.SUCESSO, erpCfop);
		return jsonReturn;
	}

Da uma olhada nisso ve se pode me ajudar,
Contando com as classe pojo acima ^^

obg

Big_E

Agora entendi, bom nesse caso tem que levar em consideração qual o banco de dados está sendo usado, no entanto para qualquer um você deve realizar um cast para “varchar” (ou outro data tipo representante de characteres.
Oracle:

Postgresql e SqlServer…

Enfim realizar a conversão do código do tipo numerico para uma representação String adicionando o operador like sucedido de ‘5%’ que indica inicio de 5 seguido de qualquer outra coisa.

Espero ter ajudado.

Qualquer coisa posta aí.

Hebert_Coelho

Big E:
Agora entendi, bom nesse caso tem que levar em consideração qual o banco de dados está sendo usado, no entanto para qualquer um você deve realizar um cast para “varchar” (ou outro data tipo representante de characteres.
Oracle:

Postgresql e SqlServer…

Enfim realizar a conversão do código do tipo numerico para uma representação String adicionando o operador like sucedido de ‘5%’ que indica inicio de 5 seguido de qualquer outra coisa.

Espero ter ajudado.

Qualquer coisa posta aí.

Só toma cuidado que o segundo exemplo só pode ser utilizado como NativeQuery e o primeiro como NamedQuery.

Alberto_Cerqueira

Mano e se eu fosse passar por parâmetro isso estaria certo??

public static final String BUSCAR_ERPCFOP_BY_TIPO = "Select s from ERPCfop s where s.cdEmpresa = :cdEmpresa and cast(s.cfop.codCFOP as varchar) like :cfop order by s.cfop.codCFOP";

Classe Buscador

public JSONReturn buscarERPCfopByTipoForaEstado(ServletRequest request, ServletResponse response) throws ObjectNotFoundException{
		List<ERPCfop> erpCfop = erpCfopFinder.buscarERPCfopByTipo("5");
		JSONReturn jsonReturn = JSONReturn.newInstance(Consequence.SUCESSO, erpCfop);
		return jsonReturn;
	}

Mesmo que o atributo codCFOP da tabela CFOP seja Long???
Só preciso que os dados daquela coluna seja carregado no browser, e não estão vindo =/

Big_E

Você pode passar o parâmetro porém não pode comprometer a sintaxe do like, tente na sua query usar algo do tipo

Confesso que nunca fiz isso e não sei se irá funcionar substituir seu parâmetro pelo restante da instrução like, mas da forma como fez não está criando a instrução corretamente.

Alberto_Cerqueira

Arrumei um jeito aqui.

vlw por tudo amigo…

flw

Alberto_Cerqueira

ultima duvida
como ele coloco como resolvido no forum???

rsrs

Criado 7 de maio de 2012
Ultima resposta 7 de mai. de 2012
Respostas 12
Participantes 3