2015-12-11 187 views
0

我得到異常:org.hibernate.AnnotationException: No identifier specified for entityHibernate的實體不PK,但有FK

我知道,休眠必須@Id在實體類,但在我的表沒有主鍵只有兩個外鍵。我如何映射hibernate實體類沒有錯誤?

例如類。

@Entity 
@Table(name="building_block") 
public class BuildingBlock implements Serializable { 

    private Integer archId; 
    private Integer mirrorId; //foreign key to Mirror table 
    private Integer makeId; //foreign key to Maker table 
    private Integer sweepId; 
    private String search; 
    private Integer length; 
    private Date createDate; 

    @Column(name="arch_id") 
    public Integer getArchId() { 
     return ArchId; 
    } 
    public void setArchId(Integer ArchId) { 
     this.ArchId = ArchId; 
    } 
    @Column(name="mirror_id") 
    public Integer getMirrorId() { 
     return mirrorId; 
    } 
    public void setMirrorId(Integer mirrorId) { 
     this.mirrorId = mirrorId; 
    } 
    @Column(name="make_id") 
    public Integer getMakeId() { 
     return makeId; 
    } 
    public void setMakeId(Integer makeId) { 
     this.makeId = makeId; 
    } 

    ... 

    @Column(name="create_date") 
    public Date getCreateDate() { 
     return createDate; 
    } 
    public void setCreateDate(Date createDate) { 
     this.createDate = createDate; 
    } 
} 
+0

對應的SQL表是什麼樣的?也就是說,哪些列構成了表的主鍵(聲明或暗示)? –

+0

雖然完全可以在Hibernate中添加複合PK(請參閱http://stackoverflow.com/questions/13936340/how-to-create-hibernate-composite-key-using-annotations),但我會勸阻它,除非你正在處理您無法執行任何模式更改的舊數據庫。 –

回答