创建表时,Hibernate会抛出异常,因为嵌入的属性会映射到同一列。
类距离在类路线中嵌入两次,如下所示:
@Embeddable
public class Distance implements Serializable{
private static final long serialVersionUID = -8466495790824502626L;
@Column(nullable = false)
protected Integer distInSec;
public Distance() {
super();
}
}
@Entity
public class Route{
@Column(nullable=false)
protected Distance currentDetour;
@Column(nullable=false)
protected Distance currentDist;
}
当hibernate创建表时,它会尝试将currentDetour和currentDist的distInSec映射到表路由中的同一列“distInSec”。因此,错误org.hibernate.MappingException:实体:的映射中的重复列被抛出。
如果可能的话,我想改变配置,因为它总是产生名称为currentDetour_distInSec和currentDist_distInSec的colums。有人知道怎么做吗?
提前致谢
答案 0 :(得分:4)
使用@AttributeOverride
自定义列名称。
答案 1 :(得分:2)
使用DefaultComponentSafeNamingStrategy作为命名策略解决了问题