gpt4 book ai didi

java - 级联多对多关系时更新错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:20 24 4
gpt4 key购买 nike

我在 hibernate 上定义了一个多对多关系,如下所示:

用户

public class User{

private List<UserCustomer> userCustomerList;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "id.user", cascade=CascadeType.ALL)
public List<UserCustomer> getUserCustomerList() {
return userCustomerList;
}
}

用户客户

@Entity
@Table(name = "RTDB_USER_CUSTOMER")
@Component("userCustomerEntity")
@AssociationOverrides({
@AssociationOverride(name = "id.user",
joinColumns = @JoinColumn(name = "ID_USER")),
@AssociationOverride(name = "id.customer",
joinColumns = @JoinColumn(name = "ID_CUSTOMER")) })

public class UserCustomer {

@EmbeddedId
public UserCustomerId getId() {
return id;
}

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "ID_ROLE_CUSTOMER", referencedColumnName = "ID") }) public RoleCustomer getRoleCustomer() {
return roleCustomer;
}

}

因此,用户有一个 UserCustomer 列表,代表用户对客户的角色。问题是,当我们更改客户的角色并调用 update() 时,我们不会更新一行,而是使用相同的角色更新所有行。当我们调用 merge() 时,它开始执行大量查询,然后给出 stackoverflow 异常 ¿这可能是映射问题吗?

最佳答案

您可以发布表格和更新代码吗?

我认为您是直接从 UserCustomer 更新角色,这应该更新所有角色,据我所知,您不想更新 UserCustomer 而只是角色客户。尝试获取 RoleCustomer 并更新它而不是 UserCustomer

关于java - 级联多对多关系时更新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587207/

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