gpt4 book ai didi

java - 如何在实体中添加对象列表

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

我正在用java编写一个简单的spring boot应用程序。我想将对象列表添加到我的实体模型中,但每次出现错误时。有人可以指导我代码应该是什么样子吗?我还使用 JPA 存储库、PostgreSQL 数据库和 Swagger。

public class Candidate {

@Id
@GeneratedValue
@ApiModelProperty(hidden = true)
@Column(name = "UUID", unique = true, length = Integer.MAX_VALUE)
private Long uuid;

@ManyToMany(cascade=CascadeType.ALL)
//@ElementCollection
private List<CandidateSkills> skills;
}

以及候选人技能列表:

@Entity
@Table(name = "CANDIDATE_TABLE_SKILLS")
public class CandidateSkills {

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;

private String skillName;

private int skillLevel;
}

错误:hibernate.PersistentObjectException:传递给持久化的分离实体:com.employee.api.models.CandidateSkills

最佳答案

我不确定您是否需要“多对多”关系,也许“一对多”关系适合您。

无论如何,如果你想添加“多对多”关系,你需要添加另一个表来引用这两个表,但 Spring 会为你做这件事:)只想定义该表的名称(在本例中为“inner_table”) )

您需要在 Candidate 类的实体字段定义中添加 @JoinTable 注释,如下所示:

.....
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name = "inner_table",
joinColumns = {@JoinColumn(name = "candidate_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "candidateSkills_id", referencedColumnName = "id")})
private List<CandidateSkills> skills;
....

并在 CandidateSkills 类中定义引用,如下所示:

@ManyToMany(mappedBy = "skills")
private List<Candidate> Candidates;

关于java - 如何在实体中添加对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48041774/

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