@Embeddable中的DATE映射错误

时间:2014-09-23 14:41:28

标签: java mysql date jpa eclipselink

我遇到一个问题,来自Date - 类的@Embeddable - 类型不会映射为Date - 在MySQL数据库中键入。相反,它被映射为VARCHAR(255)。使用正常的@Entity - 类可以正常工作。

我正在使用带有EclipseLink 2.5的JPA 2.1。

我有@Embeddable - 这样的类:

@Embeddable
public class AbsencePeriod implements Serializable {

    @Getter
    @Setter
    @Column(name = "\"START\"")
    @Temporal(TemporalType.DATE)
    private Date start;

    @Getter
    @Setter
    @Column(name = "\"END\"")
    @Temporal(TemporalType.DATE)
    private Date end;

    public AbsencePeriod() {
    }

}

我把它包含在另一个类中:

@Entity
public Person extends BaseEntity implements Serializable {

    @ElementCollection
    @CollectionTable(
            name = "_PERSON_ABSENCEPERIODS",
            joinColumns = @JoinColumn(name = "PERSON_ID")
    )
    @Getter
    @Setter
    private List<AbsencePeriod> absencePeriods;

}

我还有一个解决方法,但我想知道,为什么会出现错误的映射。解决方法类似于设置@ColumnDefinition手册:

@Embeddable
public class AbsencePeriod implements Serializable {

    @Getter
    @Setter
    @Column(name = "\"START\"")
    @Basic
    @Column(columnDefinition = "TIMESTAMP")
    @Temporal(TemporalType.TIMESTAMP)
    private Date start;


}

0 个答案:

没有答案