2011-11-07 347 views
1

由於嵌入屬性映射到同一列,Hibernate在創建表時會引發異常。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;  
} 

當休眠創建表,它試圖作爲currentDist映射currentDetour的distInSec以及到在同一列中「distInSec」表路線。因此,拋出了org.hibernate.MappingException:實體映射中的重複列。

如果可能,我想改變它的配置方式,它總是生成名爲currentDetour_distInSec和currentDist_distInSec的列。有人有一個想法如何做到這一點?

在此先感謝

回答

2

使用DefaultComponentSafeNamingStrategy的命名策略解決問題

3

使用@AttributeOverride自定義列名。

+0

這個工作,但不是默認配置。不管怎樣,謝謝你! –

相關問題