Bom dia!
Nesses dias estou apanhando um pouco do JPQL, e mais uma vez conto com a ajuda de vocês.
Preciso colocar um distinct na query.
Li o post indicado pelo Herbert Coelho (http://uaihebert.com/?p=1137) mais mesmo assim não to conseguindo resolver a questão abaixo:
CORRETO - TRAZ TUDO
String jpql = " select 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 ";
ERRADO - COM DISTINCT
String jpql = " select new TelemarketingEntity(distinct(a.data, a.qtdeRecebida, a.safra, a.qtdeErro, a.qtdeEnviadaOk, a.telemarketingPK)) " +
" from TelemarketingEntity a, ArquivoEntity b " +
" where a.telemarketingPK.arqnom = b.arquivoPK.arqnom ";
ERRO: Encontrado “distinct” no caractere 32, mas esperado: [“AVG”, “COUNT”, “MAX”, “MIN”, “SUM”, ].
[code]@Entity
@Table(name = “FSCMARQ”)
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;
private String codEmpresa;
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.setCodEmpresa(codEmpresa);
this.telemarketingPK = telemarketingPK;
}
/*public TelemarketingEntity(Date data, Long qtdeRecebida, Long safra,
Long qtdeErro, Long qtdeEnviadaOk) {
super();
this.data = data;
this.qtdeRecebida = qtdeRecebida;
this.safra = safra;
this.qtdeErro = qtdeErro;
this.qtdeEnviadaOk = qtdeEnviadaOk;
}*/
@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;
}
}[/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]Agradeço desde já!