Mapping an Oracle Date to a Java object using Hibe

2019-03-29 12:37发布

问题:

I get the message "literal does not match format string".

For instance, here are some methods from a Java class:

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

Here is the mapping from the Hibernate config file for that class:

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

and here is the DDL for that column:

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

I tried setting type="date" and "timestamp" (not at the same time) as an attr on the property in the hibernate config, and then changing the Java type from String to Date, but that gave me a different error. I read something about binding the parameter but couldn't make heads or tails of that.

When I comment out that property from the config everything else is working, so I'm sure that's my issue. The annoying thing is that I have another table/class mapping with seemingly the same Oracle Date->Java String mapping that doesn't give me this problem.

回答1:

You would be better off using a Java.util date class as the property to reflect the oracle date column.

Class blah{
private Date dateTime;

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

blah(){}

}

What was the error when you used Date as the Java class property?



回答2:

The type of your dateTime attribute should be Timestamp or Date, that should automatically convert Oracle date/time to it. I don't see the point of keeping date as a String since you have to involve the formatting.