jodatime持久化hibernate jpa
http://www.joda.org/joda-time-hibernate/index.html
JODA-TIME提供了一个功能更全面强大的功能组来替换JDK中的Date;
//字符串转日期
String timeString = "2006-01-26T13:30:00-06:00";
DateTime dateTime = new DateTime(timeString);
System.out.println(dateTime.toDate());
timeString = "2006-01-26";
dateTime = new DateTime(timeString);
System.out.println(dateTime);
java.sql.Timestamp setSendDate = Timestamp.valueOf("2006-01-26 13:30:00");
System.out.println(setSendDate);
//日期转字符串
org.joda.time.DateTime dateTime0 = new org.joda.time.DateTime ();
System.out.println(dateTime0);
System.out.println(dateTime0.toString("yyyy-MM-dd") + dateTime0.toString("hh:mm:ss") );
但是很多时候需要持久化日期到数据库中,比较流行的持久化框架Hibernate却并不支持JodaTime数据类型,hibernate支持的日期类型java.util.Date ,java.sql.Timestamp;
为了使jodaTime日期类型能够集成到hibernate框架中,需要加入jodaTime-hibernate ;
jodaTime-hibernate 1.3兼容 Hibernate 3.6 不支持 Hibernate 4.0;
如何获得jodaTime-hibernate?
<!-- Joda Time Library -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time-hibernate</artifactId>
<version>1.3</version>
</dependency>
如何配置jodaTime-hibernate?
Hibernate mapping
Add the type
attribute to your property configuration.
e.g.:
<property type="org.joda.time.contrib.hibernate.PersistentDateTime" name="dateTime"/>
Hibernate annotations
Set the type using the @org.hibernate.annotations.Type
annotation.
e.g.:
@Column @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime") private DateTime fromDate;
Sometimes there are multiple columns to be specified, as with PersistentDateTimeTZ
:
@Columns(columns={@Column(name="startTime"),@Column(name="startTimezone")}) @Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ") private DateTime startDateTime;