2009-06-07 67 views
5

我收到消息“文字与格式字符串不匹配”。使用Hibernate将Oracle日期映射到Java对象

举例来说,这里是从一个Java类的一些方法:

public String getDateTime(); 
public void setDateTime(String date_time); 

下面是该类的Hibernate的配置文件的映射:

<property name="dateTime" column="date_time"> 

这里是DDL为列:

CREATE TABLE "SCHEMA"."TABLE_NAME" 
    ( 
    "DATE_TIME" DATE, 
    etc. 
    ) 

我试着设置type =“date”和“timestamp”(不在同一时间)作为一个attr on hibernate config中的属性,然后将String类型从String更改为Date,但这给了我一个不同的错误。我读了一些关于绑定参数的内容,但无法做出正面或反面的结论。

当我从配置注释掉其他所有的东西都在工作,所以我肯定这是我的问题。令人讨厌的是,我有另一个表/类映射与看似相同的Oracle日期 - > Java字符串映射,不会给我这个问题。

回答

8

您最好使用Java.util日期类作为属性来反映oracle日期列。

Class blah{ 
private Date dateTime; 

public Date getDateTime(); 
public void setDateTime(Date dateTime); 

blah(){} 

} 

当您使用Date作为Java类属性时发生了什么错误?

+0

呃。我不认为我第一次将setter方法参数的类型从String更改为Date。感觉愚蠢,因为这次它像发条一样工作。 – 2009-06-07 02:32:20

+2

只有在映射属性中不包含“type”属性时才能使用: 如果您将类型的值包含“date”或“timestamp “它不会准确地转换值。所以下面是不好: 这是一个解释为什么这是真的链接:http://fishbowl.pastiche.org/2005/07/13/hibernate_oracle_and_dates_a_story /这里是解释解决方案的链接:http://www.enavigo.com/2007/10/20/mapping-hibernate-to-oracle-date-fields/ – 2010-12-23 18:24:29

2

dateTime属性的类型应该是时间戳或日期,它应该自动将Oracle日期/时间转换为它。我没有看到将日期保持为字符串的重要性,因为您必须涉及格式。

相关问题