@ManyToOne没有在子表中保留“父FKey”列

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

@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);
    }

    .....
}
daihongze 回答:@ManyToOne没有在子表中保留“父FKey”列

cascade=CascadeType.ALL中删除TaxJurisdiction。您不应将对TaxJurisdiction的任何操作级联到客户端。另外,如果您真的不需要它懒惰,也请删除fetch。以下代码在我的测试中工作正常

@ManyToOne
@JoinColumn(name="CLIENT_CODE",nullable = false,updatable = false,insertable = true)
private Clients clients;
本文链接:https://www.f2er.com/3163447.html

大家都在问