jadira usertype PersistentLocalTimeAsString将LocalTime保存为tinyblob

时间:2013-06-14 10:15:53

标签: jpa jodatime

我有一个org.joda.time.LocalTime变量的JPA实体。我正在使用Hibernate作为JPA实现,并使用jadira usertype来处理JodaTime类,因此我的变量的定义是:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalTimeAsString")
private LocalTime startTime;

当Hibernate为该变量创建列时,它使用 tinyblob 而不是 varchar ,是不是?

如果它是正确的,是否有一些类将LocalTime保存为 varchar

1 个答案:

答案 0 :(得分:1)

如果Hibernate无法找到列的用户类型,则会发生此行为。

1)使用TypeDef来避免拼写错误

   @TypeDefs(
      {
         @TypeDef(name = "dateAsString", typeClass = org.jadira.usertype.dateandtime.joda.PersistentLocalTimeAsString.class
      }  
   public class MyClass {  
      @Type(type="dateAsString")
      private LocalTime startTime;     

如果类路径中没有PersistentLocalTimeAsString,则会出现编译错误。

2)检查类路径中是否存在jadira-usertype。

编辑

  @Type(type="dateAsString")
  @Column(columnDefinition = "VARCHAR")
  private LocalTime startTime;