Bom Dia!!
Preciso da ajuda de voces, mais uma vez rsrs
Tenho um tela de pesquisa aonde o usuario pode selecionar os parametros que quiser.
Os parametros nomeArquivo, cpf e safra estao ok, meu problema esta na busca pela data (dataEnvioInicial).
O erro acontece no método pesquisarMenuArquivo, quando a query vai ser executada acusa erro na passagem do parametro data.
Abaixo segue meu codigo e a mensagem de erro. Vou continuar tentando, mais se alguem puder ajudar agradeço.
mensagem de erro: O EJB emitiu uma exceção (não-declarada) inesperada durante a chamada do método “pesquisarMenuArquivo” no bean “BeanId(servicoscartaocreditoEAR#servicoscartaocreditoEJB.jar#ControleEPSDAOImpl, null)”. Dados da exceção:<openjpa-1.2.3-SNAPSHOT-r422266:1035770 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: O parâmetro “dataEnvioInicial” é do tipo “java.lang.String”, mas a declaração na consulta é do tipo “java.util.Date”.
obs: banco é informix e o select o formato da data é yyyy-MM-dd
[code]@Entity
@Table(name = “xxxxxx”)
public class TelemarketingEntity implements java.io.Serializable {
private static final long serialVersionUID = -3872221887032117843L;
private Long arqtipcod;
private Long arqsitcod;
private Date arqdat;
private Date data;
private Long qtdeRecebida;
private Long safra;
private Long qtdeErro;
private Long qtdeEnviadaOk;
//Transient
private String codEmpresa;
private Date dtRecebimento;
private Date dtEnvio;
private TelemarketingPK telemarketingPK;
public TelemarketingEntity(Date data, Long qtdeRecebida, Long safra,
Long qtdeErro, Long qtdeEnviadaOk, TelemarketingPK telemarketingPK) {
super();
this.data = data;
this.qtdeRecebida = qtdeRecebida;
this.safra = safra;
this.qtdeErro = qtdeErro;
this.qtdeEnviadaOk = qtdeEnviadaOk;
this.telemarketingPK = telemarketingPK;
}
public TelemarketingEntity(Date data, Long qtdeRecebida, Long safra,
Long qtdeErro, Long qtdeEnviadaOk, String codEmpresa,
TelemarketingPK telemarketingPK) {
super();
this.data = data;
this.qtdeRecebida = qtdeRecebida;
this.safra = safra;
this.qtdeErro = qtdeErro;
this.qtdeEnviadaOk = qtdeEnviadaOk;
this.codEmpresa = codEmpresa;
this.telemarketingPK = telemarketingPK;
}
public TelemarketingEntity() {
}
@EmbeddedId
public TelemarketingPK getTelemarketingPK() {
return telemarketingPK;
}
public void setTelemarketingPK(TelemarketingPK telemarketingPK) {
this.telemarketingPK = telemarketingPK;
}
@Column(name = "arqtipcod")
public Long getArqtipcod() {
return arqtipcod;
}
public void setArqtipcod(Long arqtipcod) {
this.arqtipcod = arqtipcod;
}
@Column(name = "arqsitcod")
public Long getArqsitcod() {
return arqsitcod;
}
public void setArqsitcod(Long arqsitcod) {
this.arqsitcod = arqsitcod;
}
@Column(name = "arqdat")
public Date getArqdat() {
return arqdat;
}
public void setArqdat(Date arqdat) {
this.arqdat = arqdat;
}
@Column(name = "arqgerdat")
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
@Column(name = "arqregqtd")
public Long getQtdeRecebida() {
return qtdeRecebida;
}
public void setQtdeRecebida(Long qtdeRecebida) {
this.qtdeRecebida = qtdeRecebida;
}
@Column(name = "arqlteqtd")
public Long getSafra() {
return safra;
}
public void setSafra(Long safra) {
this.safra = safra;
}
@Column(name = "rcsregqtd")
public Long getQtdeErro() {
return qtdeErro;
}
public void setQtdeErro(Long qtdeErro) {
this.qtdeErro = qtdeErro;
}
@Column(name = "actregqtd")
public Long getQtdeEnviadaOk() {
return qtdeEnviadaOk;
}
public void setQtdeEnviadaOk(Long qtdeEnviadaOk) {
this.qtdeEnviadaOk = qtdeEnviadaOk;
}
public void setCodEmpresa(String codEmpresa) {
this.codEmpresa = codEmpresa;
}
@Transient
public String getCodEmpresa() {
return codEmpresa;
}
@Transient
public Date getDtRecebimento() {
return dtRecebimento;
}
public void setDtRecebimento(Date dtRecebimento) {
this.dtRecebimento = dtRecebimento;
}
@Transient
public Date getDtEnvio() {
return dtEnvio;
}
public void setDtEnvio(Date dtEnvio) {
this.dtEnvio = dtEnvio;
}
}[/code]
[code]@Embeddable
public class TelemarketingPK implements ICompositePrimaryKey {
private static final long serialVersionUID = 6859445788577818752L;
private Long arqcntnum;
private String arqnom;
public TelemarketingPK() {
super();
}
public TelemarketingPK(Long arqcntnum, String arqnom) {
super();
this.arqcntnum = arqcntnum;
this.arqnom = arqnom;
}
@Column(name="arqcntnum")
public Long getArqcntnum() {
return arqcntnum;
}
public void setArqcntnum(Long arqcntnum) {
this.arqcntnum = arqcntnum;
}
@Column(name="arqnom")
public String getArqnom() {
return arqnom;
}
public void setArqnom(String arqnom) {
this.arqnom = arqnom;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((arqcntnum == null) ? 0 : arqcntnum.hashCode());
result = prime * result + ((arqnom == null) ? 0 : arqnom.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TelemarketingPK other = (TelemarketingPK) obj;
if (arqcntnum == null) {
if (other.arqcntnum != null)
return false;
} else if (!arqcntnum.equals(other.arqcntnum))
return false;
if (arqnom == null) {
if (other.arqnom != null)
return false;
} else if (!arqnom.equals(other.arqnom))
return false;
return true;
}
}[/code]
[code]public List enviar() {
System.out.println("** iniciando metodo enviar **");
DateFormat strDf = new SimpleDateFormat("yyyy-MM-dd");
int posicao;
this.list = controleEPS.pesquisarMenuArquivo(
this.nomeArquivo.toString().trim(),this.cpf,this.safra,this.dataEnvioInicial,27l,29l,30l,2l);
if (this.list.size() > 0){
System.out.println("qtde retorno: " + this.list.size());
} else {
System.out.println("** enviar - não achou!.");
}
return this.list;
}[/code][code]@Override
public List pesquisarMenuArquivo(String nomeArquivo, Long cpf, Long safra, Date dataEnvioInicial, Long codTpArquivo27, Long codTpArquivo29,
Long codTpArquivo30, Long codStArquivo2 ){
DateFormat strDf = new SimpleDateFormat("yyyy-MM-dd");
List<Long> listArqtipcod = new ArrayList<Long>();
listArqtipcod.add(27l);
listArqtipcod.add(30l);
String emp = null;
if (empresa != null)
emp = Long.toString(empresa);
String jpql = " select distinct new TelemarketingEntity(a.data, a.qtdeRecebida, a.safra, a.qtdeErro, a.qtdeEnviadaOk, a.telemarketingPK) " +
" from TelemarketingEntity a, ArquivoEntity b " +
" where a.telemarketingPK.arqnom = b.arquivoPK.arqnom ";
if(!nomeArquivo.equals("") && nomeArquivo != null ){
jpql += " and a.telemarketingPK.arqnom = :nomeArquivo ";
}
if(cpf != null){
jpql += " and b.arquivoPK.cgccpfnumdig = :cpf ";
}
if(safra != null){
jpql += " and a.safra = :safra ";
}
if(dataEnvioInicial != null){
jpql += " and arqtipcod = :codTpArquivo29 and arqsitcod = :codStArquivo2 and a.data = :dataEnvioInicial ";
}
final Query query = this.entityManager.createQuery(jpql);
if(!nomeArquivo.equals("") && nomeArquivo != null ){
query.setParameter("nomeArquivo", nomeArquivo);
}
if(cpf != null){
query.setParameter("cpf", cpf);
}
if(safra != null){
query.setParameter("safra", safra);
}
if(dataEnvioInicial != null){
query.setParameter("codTpArquivo29", codTpArquivo29);
query.setParameter("codStArquivo2", codStArquivo2);
query.setParameter("dataEnvioInicial", strDf.format(dataEnvioInicial));
}
List<TelemarketingEntity> retorno = new ArrayList<TelemarketingEntity>();
retorno.addAll(query.getResultList());
return retorno;
} [/code]