Hibernate/JPA 配置中重复字段问题的解决方案
在 Hibernate 或 JPA 配置时,若建立多对一关系映射出现两个重复的定义,会导致数据库生成重复的列。
Hibernate XML 配置示例
在 Hibernate 配置文件中,如果同时存在以下两种定义:
<property name="schedule_id"/>
<many-to-one name="schedule" column="schedule_id"/>
这会导致数据库中生成两个 schedule_id 字段,引发错误。解决方式是去掉其中一个,通常建议保留关联对象的 <many-to-one> 定义,移除冗余的 <property> 定义。
JPA 注解形式示例
在 JPA 实体类中,若同时定义了属性字段和关联对象映射且列名相同,也会产生同样的问题:
private String scheduleId;
@Column(length = 32)
public String getScheduleId() {
return scheduleId;
}
public void setScheduleId(String scheduleId) {
this.scheduleId = scheduleId;
}
private MediaSchedule mediaSchedule;
@ManyToOne
@JoinColumn(name = "scheduleId")
public MediaSchedule getMediaSchedule() {
return mediaSchedule;
}
public void setMediaSchedule(MediaSchedule mediaSchedule) {
this.mediaSchedule = mediaSchedule;
}
上述代码同样会导致数据库中出现两个相同的字段。解决方法是去掉其中一个,或者将其中一个字段的名称修改为其他值(例如将 name="scheduleId" 改为 name="scheId")。

