Java 保存返回子记录时的Hibernate联接表已存在
我正在使用spring数据(Hibernate) 用户型号:Java 保存返回子记录时的Hibernate联接表已存在,java,spring,hibernate,spring-data-jpa,spring-data,Java,Spring,Hibernate,Spring Data Jpa,Spring Data,我正在使用spring数据(Hibernate) 用户型号: @Entity @Table (name="users") @Inheritance(strategy = InheritanceType.JOINED) public class User { @Id @GeneratedValue(strategy = GenerationType.Auto) private UUID id; @Column(unique=true) private String emai
@Entity
@Table (name="users")
@Inheritance(strategy = InheritanceType.JOINED)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.Auto)
private UUID id;
@Column(unique=true)
private String email;
@ManyToMany
@JoinTable(
name="users_skills",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "skill_id", referencedColumnName = "id")
)
private Collection<Skill> skills;
// Getter's Setter's
}
用户存储库
@Respository
public interface UserRepository extends JpaRepository<User, UUID> {
boolean existsByEmail(String email);
}
{
"email": "dummy@exmaple.com",
"skills": [{"name": "C++"}, {"name":"Java"}]
}
如果数据库中不存在该技能,那么它就可以工作,如果我尝试附加现有技能,则会出现以下错误
ERROR: duplicate key value violates unique constraint "uk_85woe63nu9klkk9fa73vf0jd0"
Detail: Key (name)=(C++) already exists.
有没有办法附加用户现有的技能,提前感谢
可能的解决方案
- 我通过了请求体中的技能并开始工作
- 还有另一种方法,预保存我需要按id查找技能并将其添加到用户技能集合中(由@Rohit建议)
{
"email": "dummy@exmaple.com",
"skills": [{"name": "C++"}, {"name":"Java"}]
}
ERROR: duplicate key value violates unique constraint "uk_85woe63nu9klkk9fa73vf0jd0"
Detail: Key (name)=(C++) already exists.
{
"email": "dummy@exmaple.com",
"skills": [{"name": "C++", "id": 1}, {"name":"Java", "id": 2}]
}