Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在hibernate spring boot中的单个事务中保存父级和子级_Java_Hibernate_Spring Boot - Fatal编程技术网

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