gpt4 book ai didi

java - 如何在复合键中使用生成的值?

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:24 25 4
gpt4 key购买 nike

我有两个具有多对一关系的类 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;
}
}

最佳答案

文档在这个主题上有点困惑......

据我所知,组合键总是必须由应用程序分配(即非生成的)至少对于标准 JPA 以及 Hibernate Core:

8.4. Components as composite identifiers

...

You cannot use an IdentifierGenerator to generate composite keys. Instead the application must assign its own identifiers.

但实际情况可能会有所不同(参见 HHH-2060 和/或 this thread 以了解使用 CompositeUserType 和 IdentifierGenerator 的替代方法)。

现在,最令人困惑的部分来自 Hibernate Annotations 3.5 文档:

2.2.3.2.4. Partial identifier generation

Hibernate supports the automatic generation of some of the identifier properties. Simply use the @GeneratedValue annotation on one or several id properties.

...

You can also generate properties inside an @EmbeddedId class.

(另请阅读 Hibernate 团队针对使用此功能的警告)。

虽然我没有任何实践经验。

引用资料

关于java - 如何在复合键中使用生成的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com