Java @embeddeble中的日期映射错误
我有一个问题,来自Java @embeddeble中的日期映射错误,java,mysql,date,jpa,eclipselink,Java,Mysql,Date,Jpa,Eclipselink,我有一个问题,来自@embeddeble-类的Date-类型不会映射为MySQL数据库中的Date-类型。相反,它被映射为VARCHAR(255)。对于正常的@实体-类,它工作正常 我正在使用JPA2.1和EclipseLink 2.5 我有一个可嵌入的类,如下所示: @Embeddable public class AbsencePeriod implements Serializable { @Getter @Setter @Column(name = "\"STA
@embeddeble
-类的Date
-类型不会映射为MySQL数据库中的Date
-类型。相反,它被映射为VARCHAR(255)
。对于正常的@实体
-类,它工作正常
我正在使用JPA2.1和EclipseLink 2.5
我有一个可嵌入的类,如下所示:
@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;
}
我把它包括在另一个类中,如下所示:
@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;
}
如果删除列定义引号,是否有效?如果是这样的话,在为DDL构建列时,它看起来像是注释处理的一个bug。我只是在我的解决方法中使用
columnDefinition
。如果没有这个,它就不能工作,但是它应该像在@Entity
-类中一样工作。因此,我的第一个代码片段显示它应该与JPA一起工作,但它将日期映射为varchar。用我的最后一段代码,我可以解决这个问题。对不起,我指的是专栏。如果让JPA将列名默认为“START”,而不是使用“\”START\”字段,那么它是否有效?