gpt4 book ai didi

JPA OneToMany,始终为空

转载 作者:行者123 更新时间:2023-12-04 04:32:11 29 4
gpt4 key购买 nike

我有双向、一对多和多对一的关系。说,一个公司有很多人,一个人有一个公司,所以,在公司中,

@OneToMany(mappedBy = "company", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Collection<Person> persons;

并亲自,
@ManyToOne
@JoinColumn(name="COMPANY_ID")
private Company company;

现在,假设我在 Company 上有一个 @PrePersist/@PreUpdate 方法,当它更新时,我想为所有人设置相同的时间戳......比如,
@PrePersist
@PreUpdate
public void setLastModified() {
this.lastModified = System.currentTimeMillis();
if (persons != null) {
for (Person person : persons) {
person.setLastModified(this.lastModified);
}
}
}

当我调试它时,我看到公司中的人员字段始终为空。当我查看person 集合的类型时,它是一个java.util.Vector。不确定这是否相关。我希望看到一些自动加载的 JPA 集合类型。

我究竟做错了什么?

最佳答案

您必须设置关系的双方。当您创建一个新人员并设置其公司时,您还必须将该人员添加到公司的人员(员工?)中。

此外,您不应该更改一个对象的 prePersist/Update 中的另一个对象,您应该使用它自己的 prePersist/Update 事件。

看,
http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

关于JPA OneToMany,始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5124186/

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