Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @embeddeble中的日期映射错误_Java_Mysql_Date_Jpa_Eclipselink - Fatal编程技术网

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\”字段,那么它是否有效?