Boa tarde galera, estou com um problema com o hibernate e o postgres, tenho uma tabela com uma coluna definida como date, quando vou executar uma consulta ao banco ele me apresenta o seguinte erro. O estranho é que o código funciona perfeitamente no mysql.
org.hibernate.exception.SQLGrammarException: could not execute query
org.postgresql.util.PSQLException: ERRO: operador não existe: date ~~ unknonw
Dica: Nenhum operador corresponde como nome o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Posição: 2511
código da consulta:
[code] public List listarCheque(Date hoje, boolean modo)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List bean ;
try
{
Criteria criteria = session.createCriteria(classe);
criteria.add(Restrictions.like(“chequeDataEntrada”,hoje));
if(modo == true)
criteria.addOrder(Order.asc("chequeLancamento"));
else
criteria.addOrder(Order.asc("chequeCodigo"));
bean = criteria.list();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Erro ao listar pelo Cheque:"+classe.getName()+"\n"+e+"\n"+e.getCause());
return null;
}
session.getTransaction().commit();
return bean;
}[/code]
classe bean:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package Bean;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
-
@author André
*/
@Entity
@Table(name = “cheque”)
@NamedQueries({
@NamedQuery(name = “Cheque.findAll”, query = “SELECT c FROM Cheque c”),
@NamedQuery(name = “Cheque.findByChequeCodigo”, query = “SELECT c FROM Cheque c WHERE c.chequeCodigo = :chequeCodigo”),
@NamedQuery(name = “Cheque.findByChequeNumero”, query = “SELECT c FROM Cheque c WHERE c.chequeNumero = :chequeNumero”),
@NamedQuery(name = “Cheque.findByChequeValor”, query = “SELECT c FROM Cheque c WHERE c.chequeValor = :chequeValor”),
@NamedQuery(name = “Cheque.findByChequeDataEntrada”, query = “SELECT c FROM Cheque c WHERE c.chequeDataEntrada = :chequeDataEntrada”),
@NamedQuery(name = “Cheque.findByChequeDataCompensacao”, query = “SELECT c FROM Cheque c WHERE c.chequeDataCompensacao = :chequeDataCompensacao”),
@NamedQuery(name = “Cheque.findByChequeQuantidadeDias”, query = “SELECT c FROM Cheque c WHERE c.chequeQuantidadeDias = :chequeQuantidadeDias”),
@NamedQuery(name = “Cheque.findByChequeTotalLiquido”, query = “SELECT c FROM Cheque c WHERE c.chequeTotalLiquido = :chequeTotalLiquido”),
@NamedQuery(name = “Cheque.findByChequeLimite”, query = “SELECT c FROM Cheque c WHERE c.chequeLimite = :chequeLimite”),
@NamedQuery(name = “Cheque.findByChequeCompensado”, query = “SELECT c FROM Cheque c WHERE c.chequeCompensado = :chequeCompensado”),
@NamedQuery(name = “Cheque.findByChequeLancamento”, query = “SELECT c FROM Cheque c WHERE c.chequeLancamento = :chequeLancamento”)})
public class Cheque implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = “cheque_codigo”)
private Integer chequeCodigo;
@Column(name = “cheque_numero”)
private String chequeNumero;
@Column(name = “cheque_valor”)
private BigDecimal chequeValor;
@Column(name = “cheque_data_entrada”)
@Temporal(TemporalType.DATE)
private Date chequeDataEntrada;
@Column(name = “cheque_data_compensacao”)
@Temporal(TemporalType.DATE)
private Date chequeDataCompensacao;
@Column(name = “cheque_quantidade_dias”)
private Integer chequeQuantidadeDias;
@Column(name = “cheque_total_liquido”)
private BigDecimal chequeTotalLiquido;
@Column(name = “cheque_limite”)
private BigDecimal chequeLimite;
@Column(name = “cheque_compensado”)
private String chequeCompensado;
@Column(name = “cheque_lancamento”)
private Integer chequeLancamento;
@JoinColumn(name = “agencia_codigo”, referencedColumnName = “agencia_codigo”)
@ManyToOne
private Agencia agenciaCodigo;
@JoinColumn(name = “cli_codigo”, referencedColumnName = “cli_codigo”)
@ManyToOne
private Cliente cliCodigo;
@JoinColumn(name = “emit_codigo”, referencedColumnName = “emit_codigo”)
@ManyToOne(optional = false)
private Emitente emitCodigo;public Cheque() {
}public Cheque(Integer chequeCodigo) {
this.chequeCodigo = chequeCodigo;
}public Integer getChequeCodigo() {
return chequeCodigo;
}public void setChequeCodigo(Integer chequeCodigo) {
this.chequeCodigo = chequeCodigo;
}public String getChequeNumero() {
return chequeNumero;
}public void setChequeNumero(String chequeNumero) {
this.chequeNumero = chequeNumero;
}public BigDecimal getChequeValor() {
return chequeValor;
}public void setChequeValor(BigDecimal chequeValor) {
this.chequeValor = chequeValor;
}public Date getChequeDataEntrada() {
return chequeDataEntrada;
}public void setChequeDataEntrada(Date chequeDataEntrada) {
this.chequeDataEntrada = chequeDataEntrada;
}public Date getChequeDataCompensacao() {
return chequeDataCompensacao;
}public void setChequeDataCompensacao(Date chequeDataCompensacao) {
this.chequeDataCompensacao = chequeDataCompensacao;
}public Integer getChequeQuantidadeDias() {
return chequeQuantidadeDias;
}public void setChequeQuantidadeDias(Integer chequeQuantidadeDias) {
this.chequeQuantidadeDias = chequeQuantidadeDias;
}public BigDecimal getChequeTotalLiquido() {
return chequeTotalLiquido;
}public void setChequeTotalLiquido(BigDecimal chequeTotalLiquido) {
this.chequeTotalLiquido = chequeTotalLiquido;
}public BigDecimal getChequeLimite() {
return chequeLimite;
}public void setChequeLimite(BigDecimal chequeLimite) {
this.chequeLimite = chequeLimite;
}public String getChequeCompensado() {
return chequeCompensado;
}public void setChequeCompensado(String chequeCompensado) {
this.chequeCompensado = chequeCompensado;
}public Integer getChequeLancamento() {
return chequeLancamento;
}public void setChequeLancamento(Integer chequeLancamento) {
this.chequeLancamento = chequeLancamento;
}public Agencia getChequeAgencia() {
return agenciaCodigo;
}public void setChequeAgencia(Agencia agenciaCodigo) {
this.agenciaCodigo = agenciaCodigo;
}public Cliente getChequeCliente() {
return cliCodigo;
}public void setChequeCliente(Cliente cliCodigo) {
this.cliCodigo = cliCodigo;
}public Emitente getEmitCodigo() {
return emitCodigo;
}public void setEmitCodigo(Emitente emitCodigo) {
this.emitCodigo = emitCodigo;
}@Override
public int hashCode() {
int hash = 0;
hash += (chequeCodigo != null ? chequeCodigo.hashCode() : 0);
return hash;
}@Override
public boolean equals(Object object) {
// TODO: Warning - this method won’t work in the case the id fields are not set
if (!(object instanceof Cheque)) {
return false;
}
Cheque other = (Cheque) object;
if ((this.chequeCodigo == null && other.chequeCodigo != null) || (this.chequeCodigo != null && !this.chequeCodigo.equals(other.chequeCodigo))) {
return false;
}
return true;
}@Override
public String toString() {
return “Bean.Cheque[chequeCodigo=” + chequeCodigo + “]”;
}
}[/code]
sql de criação do banco:
create table CHEQUE
(
CHEQUE_CODIGO serial not null,
CLI_CODIGO int,
AGENCIA_CODIGO int,
EMIT_CODIGO int not null,
CHEQUE_NUMERO varchar(15),
CHEQUE_VALOR decimal(10,2),
CHEQUE_DATA_ENTRADA date,
CHEQUE_DATA_COMPENSACAO date,
CHEQUE_QUANTIDADE_DIAS int,
CHEQUE_TOTAL_LIQUIDO decimal(10,2),
CHEQUE_LIMITE decimal(10,2),
CHEQUE_COMPENSADO char(1),
CHEQUE_LANCAMENTO int,
primary key (CHEQUE_CODIGO)
);
espero que possam me ajudar, já revirei a net e não consegui achar nada sobre o assunto…
e desde já obrigado…