【发布时间】:2016-03-17 13:19:32
【问题描述】:
我遇到了异常:org.hibernate.AnnotationException: No identifier specified for entity
我知道 hibernate 在实体类中必须有 @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;
}
}
【问题讨论】:
-
对应的SQL表是什么样的?也就是说,哪些列构成了表的主键(声明的或隐含的)?
-
虽然在 Hibernate 中添加复合 PK 是完全可能的(请参阅 stackoverflow.com/questions/13936340/…),但我不鼓励这样做,除非您正在处理无法执行任何架构更改的遗留数据库.
标签: java database hibernate jpa