Hibernate e datas

2 respostas
fviana

ola pessoal!!!

estou usando hibernate em um projeto.
neste, há tabelas com campos do tipo Date.
o banco de dados é mysql.

quando vou gravar o objeto no banco da o seguinte erro:

2005-07-07 15:49:44,361 DEBUG hibernate.impl.SessionImpl  -> opened session at timestamp: 4590641906819072
 2005-07-07 15:49:45,426 DEBUG hibernate.transaction.JDBCTransaction  -> begin
 2005-07-07 15:49:45,426 DEBUG hibernate.jdbc.AbstractBatcher  -> opening JDBC connection
 2005-07-07 15:49:45,426 DEBUG hibernate.connection.DriverManagerConnectionProvider  -> total checked-out connections: 0
 2005-07-07 15:49:45,426 DEBUG hibernate.connection.DriverManagerConnectionProvider  -> using pooled JDBC connection, pool size: 0
 2005-07-07 15:49:45,426 DEBUG hibernate.transaction.JDBCTransaction  -> current autocommit status: false
 2005-07-07 15:49:46,914 DEBUG event.def.DefaultSaveOrUpdateEventListener  -> saving transient instance
 2005-07-07 15:49:46,961 DEBUG event.def.AbstractSaveEventListener  -> generated identifier: 2005-07-07 15:49:39, using strategy: org.hibernate.id.Assigned
 2005-07-07 15:49:46,977 DEBUG event.def.AbstractSaveEventListener  -> saving [br.org.apaecontagem.model.Feriado#2005-07-07 15:49:39]
 2005-07-07 15:49:48,543 DEBUG hibernate.transaction.JDBCTransaction  -> rollback
 2005-07-07 15:49:48,543 DEBUG hibernate.jdbc.JDBCContext  -> before transaction completion
 2005-07-07 15:49:48,559 DEBUG hibernate.impl.SessionImpl  -> before transaction completion
 2005-07-07 15:49:48,559 DEBUG hibernate.transaction.JDBCTransaction  -> rolled back JDBC Connection
 2005-07-07 15:49:48,574 DEBUG hibernate.jdbc.JDBCContext  -> after transaction completion
 2005-07-07 15:49:48,574 DEBUG hibernate.impl.SessionImpl  -> after transaction completion
 java.lang.UnsupportedOperationException: cannot perform lookups on timestamps

o metodo que grava é o seguinte:

public static void insert(Object obj) throws Exception{
		Session session = Persistencia.currentSession();
		Transaction tx = session.beginTransaction();
		try{
			session.save(obj);
			session.flush();
			tx.commit();
		}catch(Exception e){
			tx.rollback();
			throw e;
		}
	}

para todos os outros objetos funciona.
so nao funciona para datas.

o mapeamento é o seguinte:

CREATE TABLE `FARIADO` (
  `DATA_FERIADO` date NOT NULL default '0000-00-00',
  `DESCRICAO` varchar(100) default NULL,
  PRIMARY KEY  (`DATA_FERIADO`),
  KEY `FARIADO_IDX_DESCRICAO` (`DESCRICAO`)
) TYPE=MyISAM;


public class Feriado implements java.io.Serializable {
	private Date dataFeriado;
	private String descricao;
	... gets e sets
}


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="br.org.apaecontagem.model.Feriado" table="FARIADO">
    <id name="dataFeriado" type="java.util.Date">
      <column name="DATA_FERIADO" length="10" not-null="true" unique="true" sql-type="date" />
      <generator class="assigned" />
    </id>
    <property name="descricao" type="java.lang.String">
      <column name="DESCRICAO" length="80" not-null="true" sql-type="varchar" />
    </property>
  </class>
</hibernate-mapping>

2 Respostas

_fs

Talvez te ajude.
http://forum.hibernate.org/viewtopic.php?t=941575&highlight=mysql+date+cannot+perform+lookups+timestamps
http://forum.hibernate.org/viewtopic.php?t=935255&highlight=mysql+date+cannot+perform+lookups+timestamps

fviana

valeu cara…

mudei para Calendar e funcionou.

Criado 7 de julho de 2005
Ultima resposta 8 de jul. de 2005
Respostas 2
Participantes 2