2017-02-11 56 views
0

我想將LocalDate保留爲Hibernate作爲Date類型,但即使在Hibernate文檔中我也找不到它。我試過一次,但是它存儲爲blob類型。如何將LocalDate作爲日期類型保留到Hibernate中

這裏是我的機票實體:

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > 
     <hibernate-mapping package="com.clustertech.entity"> 

    <class name="Ticket" table="ticket"> 
    <id name="id" type="int" column="id"> 
     <generator class="native" /> 
    </id> 
    <property name="date" column="tb_date" type="date" length="35"/> 
    <property name="topic" column="tb_topic" type="string" length="35"/> 
    <property name="subject" column="tb_subject" type="string" length="35"/> 
    <property name="status" column="tb_status" type="string" length="35"/> 
    <property name="message" column="tb_message" type="string"  length="255"/> 

    <many-to-one name="person" column="person_id"/> 

     </class> 
    </hibernate-mapping> 

這裏是我的實體類:

public class Ticket implements Comparable<Ticket> { 

    private int id; 
    private LocalDate date; 
    private String topic; 
    private String Subject; 
    private String message; 
    private String status; 
    private Person person; 
} 

它有getter和setter作爲一個正常的POJO類。我在其他網站上看到了這樣做的一種方式,但他們正在使用偏移。我想要類似的東西,但我不使用普通POJO類和hbm.xml文件的偏移量。我很確定我必須創建另一個類才能將LocalDate轉換爲Date,但我不知道如何將該類與我的實體連接起來。

回答

1

你必須創建一個轉換器:

@Converter 
public class MyConverter implements AttributeConverter<LocalDate, Date> { 

    @Override 
    public Date convertToDatabaseColumn(LocalDate localDate) { 
     if(localDate == null){ 
      return null; 
     } 

     return Date.valueOf(localDate); 
    } 

    @Override 
    public LocalDate convertToEntityAttribute(Date date) { 
     if(date == null){ 
      return null; 
     } 

     return date.toLocalDate(); 
    } 
} 

然後在你的hbm.xml文件,添加你轉換器作爲類型屬性:

<property name="date" column="tb_date" type="date"/> 
<convert converter="com.mypkg.MyConverter" attribute-name="date"/> 
+0

我想,但我有此錯誤無法確定類型:com.clustertech.entity.TypeConverter,在表:ticket,列:[org.hibernate.mapping.Column(tb_date)]。我不知道發生了什麼,我完全是你寫的。我想念什麼?看起來Hibernate在啓動時找不到我的轉換器類。 – yfabio

+0

嘗試添加

相關問題