Hibernate:实体映射中的重复列两个相同类型的嵌入类

时间:2011-11-07 18:32:52

标签: hibernate jpa hibernate-mapping

创建表时,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。有人知道怎么做吗?

提前致谢

2 个答案:

答案 0 :(得分:4)

使用@AttributeOverride自定义列名称。

答案 1 :(得分:2)

使用DefaultComponentSafeNamingStrategy作为命名策略解决了问题