Nic*_*ick 13 java orm annotations hibernate composite-key
我有两个类documentlog和documentversion(主键:int doc_id和int docVersionID),具有多对一关系.我使用了一个名为CompundKey的复合键类来管理复合主键.我需要自动增加docversionID,但我无法做到这一点.在这方面你能帮我吗?
@Entity
@Table(name = "Documentversion", schema = "DocumentManagement")
public class DocumentVersion implements Serializable {
private CompoundKey id;
private List<DocumentLog> documentLog;
@OneToMany(mappedBy="documentVersion", targetEntity=DocumentLog.class,
cascade ={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
public List<DocumentLog> getDocumentLog() {
return documentLog;
}
public void setDocumentLog(List<DocumentLog> documentLog) {
this.documentLog = documentLog;
}
@EmbeddedId
@AttributeOverride(name="doc_Id", column=@Column(name="doc_Id") )
public CompoundKey getId() {
return id;
}
public void setId(CompoundKey id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
Pas*_*ent 12
文档在这个主题上有点混乱......
据我所知,复合键总是必须由应用程序(即非生成)分配,至少使用标准JPA,还有Hibernate Core:
8.4.组件作为复合标识符
...
您不能使用IdentifierGenerator生成复合键.相反,应用程序必须分配自己的标识符.
但实际情况可能略有不同(有关使用CompositeUserType和IdentifierGenerator的替代方法,请参阅HHH-2060和/或此线程).
现在,最令人困惑的部分,来自Hibernate Annotations 3.5文档:
2.2.3.2.4.部分标识符生成
Hibernate支持自动生成一些标识符属性.只需
@GeneratedValue
在一个或多个id属性上使用 注释即可....
您还可以在
@EmbeddedId
类中生成属性.
(还请阅读Hibernate团队针对使用此功能的警告).
虽然我没有任何实际经验.