Java 无法在hibernate spring boot中的单个事务中保存父级和子级
我有一对多单向映射 雇主实体Java 无法在hibernate spring boot中的单个事务中保存父级和子级,java,hibernate,spring-boot,Java,Hibernate,Spring Boot,我有一对多单向映射 雇主实体 @OneToMany(cascade= CascadeType.ALL) @JoinColumn(name="employer_id") privae List<Employee> empDetails = new ArrayList<>(); 从邮递员发送父实体和子实体时,am gettin异常,如“无法添加或更新子实体外部反转失败”。我的问题是,是否必须在单个事务中双向保存父级和子级???不一定 如果要保存子实体,同时也要保存父实体,
@OneToMany(cascade= CascadeType.ALL)
@JoinColumn(name="employer_id")
privae List<Employee> empDetails = new ArrayList<>();
从邮递员发送父实体和子实体时,am gettin异常,如“无法添加或更新子实体外部反转失败”。我的问题是,是否必须在单个事务中双向保存父级和子级???不一定
如果要保存子实体,同时也要保存父实体,则需要双向映射
例:单向映射
@Repository
public interface IEmployer extends JpaRepository<Employer, Long> {
}
@Component
public class Employer implements IEmployer {
@Autowired
private IEmployer empRepo;
List<Employee> listEmployee = new ArrayList<>();
Employer employer = new Employer();
Employee employee = new Employee();
employee.setId(100);
listEmployee.add(employee);
employer.setEmpoyee(listEmployee);
empRepo.save(employer); //JPA repo save
}
@存储库
公共接口IEmployer扩展了JpaRepository{
}
@组成部分
公共类雇主实现IEmployer{
@自动连线
私营企业empRepo;
List listEmployee=new ArrayList();
雇主=新雇主();
员工=新员工();
雇员setId(100);
listEmployee.add(员工);
雇主。SetEmpoye(列表雇员);
empRepo.save(雇主);//JPA repo save
}
删除
@Column(name = "employer_id")
private int employerId
从您的Employee
类(因为这不是单向映射的方式,如果您需要id,那么就进行双向映射,您现在所做的是两者的混合,这是行不通的)
要保存,请将
员工
对象添加到雇主
对象,然后保存雇主。您不必再保存员工。实际上,我正在尝试在一次保存呼叫中保存父项和子项。我从邮递员那里发送json。那时我得到这个error@yuvanath他试图告诉您,如果您有CascadeType.Persist(或在本例中为CascadeType.All),则不必手动保存子项,您只需保存父项,子项将自动通过@PaulD保存。您在注释中提到了“cascade=CascadeType.ALL”,在保存父实体时,应该注意保存子实体。是的,但问题是它没有保存
@Column(name = "employer_id")
private int employerId