[Resolvido] Inserindo uma data e hora para uma campo tipo data no oracle (JPA e Hibernate)

Prezados,

Tentei de várias formas inserir na tabela uma data e hora para um campo data do oracle 10g, mas não consegui. Para realizar a persistência estou utilizando o JPA com hibernate.
No mapemento eu uso @Temporal(TemporalType.DATE) utilizei @Temporal(TemporalType.TIMESTAMP) , mas ocorreu um exceção quando subiu a aplicação.

A informação que mando é assim dd/MM/yyyy HH:mm:ss só que salva assim dd/MM/yyyy.

Gostaria de saber se alguém já passou por isso.

Olá meu caro! O certo é você usar um TIMESTAMP caso queira pegar/setar um campo com data e hora. Se ocorreu um erro, cole ele aqui para nós resolvermos. :smiley:

Para salvar a hora voce deve usar TimeStamp, so DATE so vai salvar a data mesmo, e quanto ao formato isso não é importante cada banco salva em um formato mas na aplicação voce pode colocar no formato que quiser…

11:56:37,887 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.persistenceunit."cmf-ear.ear/cmf-ejb-1.0.jar#CMFEntityManager": org.jboss.msc.service.StartException in service jboss.persistenceunit."cmf-ear.ear/cmf-ejb-1.0.jar#CMFEntityManager": Failed to start service at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_26] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_26] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_26] Caused by: javax.persistence.PersistenceException: [PersistenceUnit: CMFEntityManager] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] ... 3 more Caused by: org.hibernate.HibernateException: Wrong column type in SYSCMF_3707.TB_NRANTT for column DTINCLUSAO. Found: date, expected: timestamp at org.hibernate.mapping.Table.validateColumns(Table.java:295) at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1275) at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:500) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) ... 9 more

Como eu disse no banco esta mapeado como Date … se eu colocar no mapeamento Date funciona.

e o tipo da coluna no banco, não por isso no banco tem que ser timestamp, datetime, etc, dependendo do banco no oracle naum sei que tipo de dados deve ser usado para isso mas da uma olhada pesquisa na net, mas concerteza deve ser o tipo de dado da coluna em questao no banco de dados…

Em relação ao formato tudo bem … a minha duvida no caso é por que salva somente a hora… como timestamp não esta rolando.

No caso eu pesquisei e parece que Oracle tem Date e Time… No date é possivel salvar a Data com Hora.

Quando eu utilizava JDBC eu consegui isso… mas com JPA não.

Prezados, Consegui

Faltava um atributo para funcionar:

@Column(name = "DATAENCERRAMENTO", columnDefinition="DATE")
@Temporal(TemporalType.TIMESTAMP)

columnDefinition - eu indiquei Date, pois é o tipo de dados para data e hora do oracle.

Obrigado