Olá pessoal. Procurei em vários outros tópicos a possível solução para o meu problema mas não obtive êxito, por isso o motivo da criação do novo tópico.
O erro (could not locate named parameter) quando a condição satisfaz o parâmetro nomeFantasia. Alguém poderia ajudar?
Abaixo o código da consulta e o da entidade
[code]public List pesquisarPorParametros(String nomeFantasia, String razaoSocial, String cnpjMatriz) {
String sql = “SELECT c FROM Cliente c WHERE 1=1”;
TypedQuery query = super.manager.createQuery(sql, Cliente.class);
if (!nomeFantasia.equals("")) {
sql += " AND c.nomeFantasia LIKE:nomeFantasia";
query = query.setParameter("nomeFantasia", nomeFantasia);
}
if (!razaoSocial.equals("")) {
sql += " AND c.razaoSocial LIKE:razaoSocial";
query = query.setParameter("razaoSocial", "%" + razaoSocial + "%");
}
if (!razaoSocial.equals("")) {
sql += " AND c.cnpjMatriz LIKE:cnpjMatriz";
query = query.setParameter("cnpjMatriz", "%" + cnpjMatriz + "%");
}
return query.getResultList();
}[/code]
Minha entidade
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import br.com.caelum.stella.bean.validation.CNPJ;
import br.com.pactotecnologia.enumeration.NivelSatisfacaoEnum;
@Entity
@Table(name = "cliente")
public class Cliente {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column
private String nomeFantasia;
@Column
private String razaoSocial;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn
private PessoaJuridica responsavelLegal;
@OneToOne
@JoinColumn
private Endereco endereco;
@CNPJ
private String cnpjMatriz;
@ElementCollection(fetch=FetchType.EAGER)
private List<String> emails;
@OneToMany(cascade = CascadeType.ALL)
private List<Telefone> telefones;
@Column
private boolean ativo;
@Temporal(TemporalType.DATE)
private Date dataProximoAtendimento;
@Enumerated(EnumType.STRING)
private NivelSatisfacaoEnum nivelSatisfacao;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public PessoaJuridica getResponsavelLegal() {
return responsavelLegal;
}
public void setResponsavelLegal(PessoaJuridica responsavelLegal) {
this.responsavelLegal = responsavelLegal;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
public String getNomeFantasia() {
return nomeFantasia;
}
public void setNomeFantasia(String nomeFantasia) {
this.nomeFantasia = nomeFantasia;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public boolean equals(Cliente outroCliente) {
if(outroCliente.getId().equals(this.id)){
return true;
}
return false;
}
public void addEmail(String email) {
this.emails.add(email);
}
public void excluirEmail(String email){
this.emails.remove(email);
}
public void addTelefone(Telefone telefone){
this.telefones.add(telefone);
}
public List<String> getEmails() {
return emails;
}
public void setEmails(List<String> emails) {
this.emails = emails;
}
public List<Telefone> getTelefones() {
return telefones;
}
public void setTelefones(List<Telefone> telefones) {
this.telefones = telefones;
}
public String getCnpjMatriz() {
return cnpjMatriz;
}
public void setCnpjMatriz(String cnpjMatriz) {
this.cnpjMatriz = cnpjMatriz;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public Date getDataProximoAtendimento() {
return dataProximoAtendimento;
}
public void setDataProximoAtendimento(Date dataProximoAtendimento) {
this.dataProximoAtendimento = dataProximoAtendimento;
}
public NivelSatisfacaoEnum getNivelSatisfacao() {
return nivelSatisfacao;
}
public void setNivelSatisfacao(NivelSatisfacaoEnum nivelSatisfacao) {
this.nivelSatisfacao = nivelSatisfacao;
}
public void excluirTelefone(Telefone telefone) {
this.telefones.remove(telefone);
}
}