gpt4 book ai didi

java - @ManyToOne 不会将父键列保留在子表中

转载 作者:行者123 更新时间:2023-12-01 22:04:19 25 4
gpt4 key购买 nike

下面的联接保留了与每个客户端相关的 TaxJurisdictions,但它不包括插入中联接 (CLIENT_CODE) 中使用的列,导致我的数据库表 TBL_TAX_JURISDICTION.CLIENT_CODE 中为空。如何更改此设置以便保留客户端代码及其税务管辖区?

@Entity
@Table(name = "TBL_TAX_JURISDICTION")
@XmlRootElement(name="taxJurisdiction")
@XmlAccessorType(XmlAccessType.FIELD)
public class TaxJurisdiction {

@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL )
@JoinColumn(name="CLIENT_CODE", nullable = false, updatable = false, insertable = true)
private Clients clients;

@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator"
)
@Column(name = "ID")
private String Id;
....
}
@Entity
@Table(name = "TBL_CLIENTS")
@XmlRootElement(name = "client")
@XmlAccessorType(XmlAccessType.FIELD)
public class Clients extends Feed {

@XmlElementWrapper(name="taxJurisdictions")
@XmlElement(name="taxJurisdiction")
@OneToMany(mappedBy = "clients", cascade=CascadeType.ALL)
private List<TaxJurisdiction> taxJurisdictions = new ArrayList<>();


@Id
@Column
@XmlElement(name = "CLIENT_CODE")
private String CLIENT_CODE;

public List<TaxJurisdiction> getTaxJurisdictions() {
return new ArrayList<>(taxJurisdictions);
}

.....
}

最佳答案

TaxJurisdiction 中删除 cascade=CascadeType.ALL。您不应将 TaxJurisdiction 上的任何操作级联到客户端。另外,如果你真的不需要它来偷懒,也可以删除 fetch 。以下代码在我的测试中运行良好

@ManyToOne
@JoinColumn(name="CLIENT_CODE", nullable = false, updatable = false, insertable = true)
private Clients clients;

关于java - @ManyToOne 不会将父键列保留在子表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701716/

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