我遇到一个问题,来自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;
}