gpt4 book ai didi

java - Hibernate:更新 OneToMany 关系

转载 作者:行者123 更新时间:2023-11-30 06:30:02 26 4
gpt4 key购买 nike

我有一个父级映射了一个子级列表。

请问如何在更新父级时更新子级列表

例子:

parent P1有 child A B C。

我决定删除B并添加D

所以父 P1 在数据库中有子 A C D。

目前我只是删除属于父 P1 的所有 child 并再次重新填充 chid(A C D)...我相信有一种更简单的方法可以做到这一点。

我知道这个任务非常敏感,请告诉我需要设置什么以确保正确插入和删除子项。

新问题:

1) 有没有办法延迟更新/删除关系?我有一个 FetchType.Lazy 列表,当我更新数据时,我可能不希望加载关系或更新它。

2) 如果列表有项目 A B C,我删除项目 C 并执行 dto.save()。 C项会被删除吗?

最佳答案

这是使用父级更新子级的映射 -

@Entity
@Table(name = "COMPANY")
@SequenceGenerator(name="CompanySeq", sequenceName="COMPANYseq", allocationSize=1)
public class Company implements Serializable {

private static final long serialVersionUID = 1L;

/*
* Customer Company Details
*/

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CompanySeq")
@Column(name = "COMPANY_ID")
private Integer id;

@Column(name="COMPANY_NAME")
private String name;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID",nullable=false)
@OrderBy(clause = "PRODUCT_NAME" )
@ForeignKey(name = "fk_company_product")
private List<Product> products = new ArrayList<Product>();

}



@Entity
@Table(name = "PRODUCT")
@SequenceGenerator(name="CompanyProductSeq", sequenceName="COMPANY_PRODUCT", allocationSize=1)
public class Product implements Serializable{

/**
* SerialVersion ID
*/
private static final long serialVersionUID = 4073418246832063389L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CompanyProductSeq")
@Column(name = "PRODUCT_ID")
private Integer id;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID", updatable = false, insertable = false, nullable=false)
private Company companyId;

@Column(name = "PRODUCT_NAME")
private String name;

}

关于java - Hibernate:更新 OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896883/

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