Pessoal,
Estou com o seguinte problema: eu armazeno uma data no meu banco de dados postgres, usando a seguinte notação @Temporal(TemporalType.TIMESTAMP).
Aqui está minha classe:
package br.pe.gov.ses.pme.modelo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.ManyToAny;
@Entity
public class Quantitativo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(sequenceName="quantitativo_SEQ",name="quantitativo_SEQ", allocationSize=1, initialValue=1)
@GeneratedValue(generator="quantitativo_SEQ",strategy=GenerationType.SEQUENCE)
private Long id;
@ManyToOne
@JoinColumn(name="quantitativoExibicao_id")
private QuantitativoExibicao quantitativoExibicao;
@OneToOne
@JoinColumn(name="HOSPITAL_ID")
@NotNull(message="É necessário escolher um hospital")
private Hospital hospital;
@OneToOne
@JoinColumn(name="ESPECIALIDADE_ID")
@NotNull(message="É necessário escolher uma especialidade")
private Especialidade especialidade;
private int quantidade;
private int encaminhamentos = 2;
@NotNull(message="É necessário escolher uma data")
@Temporal(TemporalType.TIMESTAMP)
@Column(name="data")
private Date data;
//1: diurno, 2: noturno
@NotNull(message="Você deve informar um turno")
@Column(name="turno")
private Integer turno;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Hospital getHospital() {
return hospital;
}
public void setHospital(Hospital hospital) {
this.hospital = hospital;
}
public Especialidade getEspecialidade() {
return especialidade;
}
public void setEspecialidade(Especialidade especialidade) {
this.especialidade = especialidade;
}
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public int getEncaminhamentos() {
return encaminhamentos;
}
public void setEncaminhamentos(int encaminhamentos) {
this.encaminhamentos = encaminhamentos;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public Integer getTurno() {
return turno;
}
public void setTurno(Integer turno) {
this.turno = turno;
}
}
Só que na hora de gerar o relatório, quando tento comparar um objeto do tipo Date com a data armazenada no banco de dados, o formato dos dois não é o mesmo.
Faço isso para comparar:
case ESPECIALIDADE:
sql = "select case when q.turno = 1 then 'Diurno' when q.turno = 2 then 'Noturno' else '' end as Plantao, q.data as data, e.nome as especialidade, h.nome as hospital, q.quantidade from quantitativo as q INNER JOIN hospital as h ON h.id = q.hospital_id INNER JOIN especialidade as e ON e.id = q.especialidade_id AND e.nome LIKE " + "'" + especialidade.getNome() + "'" + "AND q.turno = "+ this.turno + "AND q.data = " + this.getDataRelatorio();
tipoRelatorio = "RELATORIO_POR_ESPECIALIDADE.jasper";
relatorio = "especialidade";
break;
Sendo que o método getDataRelatorio() é da seguinte forma:
public Date getDataRelatorio() {
return dataRelatorio;
}
Enquanto no banco de dados a data está armazenada assim: 2012-07-26 00:00:00, o this.getDataRelatorio() retorna a data com o formato Thu Jul 26 00:00:00 GMT-03:00 2012.
O que eu posso fazer para resolver isso?