Hibernate CascadeType.Persist创建一个选择查询
我试图持久化一个与其他实体有一对多关系的对象。使用CascadeType.ALL可以正常工作,但实际上,我不想在删除主对象时删除该实体。因此,我尝试使用CascadeType.PERSIST。但当我使用它时,它会进行一个select查询,并表示找不到该实体。那么为什么hibernate在我使用cascadeType.PERSIST时这么做呢 这是我的课堂:Hibernate CascadeType.Persist创建一个选择查询,hibernate,jpa,one-to-many,cascade,hibernate-cascade,Hibernate,Jpa,One To Many,Cascade,Hibernate Cascade,我试图持久化一个与其他实体有一对多关系的对象。使用CascadeType.ALL可以正常工作,但实际上,我不想在删除主对象时删除该实体。因此,我尝试使用CascadeType.PERSIST。但当我使用它时,它会进行一个select查询,并表示找不到该实体。那么为什么hibernate在我使用cascadeType.PERSIST时这么做呢 这是我的课堂: public class Employeer{ @Id private String id; @Column
public class Employeer{
@Id
private String id;
@Column
private String name;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "employer_details", joinColumns = {@JoinColumn(name = "employeer_id", referencedColumnName = "id")}
, inverseJoinColumns = {@JoinColumn(name = "details_id", referencedColumnName = "id")})
private Set<Address> otherObjects= new HashSet<>();
}
公共类雇员{
@身份证
私有字符串id;
@纵队
私有字符串名称;
@OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name=“employer\u details”,joinColumns={@JoinColumn(name=“employeer\u id”,referencedColumnName=“id”)}
,inverseJoinColumns={@JoinColumn(name=“details\u id”,referencedColumnName=“id”)})
私有设置。但我正在尝试获取为什么CascadeType.PERSIST不起作用。问题。1为什么使用CascadeType.PERSIST,不持久地址元素?答案。1它应该起作用-请检查您是否将地址设置为Employee。是的,我设置了。但正如我所说的,它在插入之前将select查询生成到adress表中。以及Address表中没有此记录,它表示entity not found.Ques.1为什么使用CascadeType.PERSIST不会持久化Address元素?答案1它应该可以工作-请检查您是否将地址设置为Employee。是的,我确实设置了地址。但正如我所说的,它在插入之前会将select查询生成到Address表中。而且因为在Address表中没有此记录adress表,它表示未找到该实体。