2017-02-11 17 views
0

LocalDateHibernateDateの型に永続化したいのですが、Hibernateのドキュメントでもそれを見つけることができません。私は一度試しましたが、ブロブタイプとして保存されています。ここLocalDateをDate型として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> 

そして、私のクラスのエンティティである:それは通常のPOJOクラスとしてゲッターとセッターを持って

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; 
} 

は、ここに私のチケットエンティティです。私は他のウェブサイトでそれを行う一つの方法を見てきましたが、彼らはアノテーションを使っています。私は何か似ているが、私はちょうど普通のPOJOクラスとhbm.xmlファイルを使っていない。私はLocalDateDateに変換するために別のクラスを作成しなければならないと確信していますが、そのクラスを自分のエンティティとどのように接続するのか分かりません。

答えて

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、at table:ticket、列:[org.hibernate.mapping.Column(tb_date)]。私は何が起こったのか分かりません、私はまさにあなたが書いたのです。私は何かが恋しいですか?これは、起動時にHibernateが私のコンバータクラスを見つけることができなかったようです。 – yfabio

+0

関連する問題