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
Hibernate CascadeType.Persist创建一个选择查询_Hibernate_Jpa_One To Many_Cascade_Hibernate Cascade - Fatal编程技术网

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

我试图持久化一个与其他实体有一对多关系的对象。使用CascadeType.ALL可以正常工作,但实际上,我不想在删除主对象时删除该实体。因此,我尝试使用CascadeType.PERSIST。但当我使用它时,它会进行一个select查询,并表示找不到该实体。那么为什么hibernate在我使用cascadeType.PERSIST时这么做呢

这是我的课堂:

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表,它表示未找到该实体。