Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 4.3.11忽略级联错误_Java_Spring_Hibernate_Spring Data - Fatal编程技术网

Java Hibernate 4.3.11忽略级联错误

Java Hibernate 4.3.11忽略级联错误,java,spring,hibernate,spring-data,Java,Spring,Hibernate,Spring Data,冬眠:4.3.11 Spring Boot JPA:1.3.3 使用JPA注释 Hibernate正在级联到我试图保存并试图删除孤立对象的一个对象中的列表。当注释上没有指定cascade并且cascade opphan默认为false时,有人能解释为什么它会尝试这样做吗?我已经尝试显式地将cascasde孤立项设置为false,结果相同。下面是与注释一起保存的类 编辑:为了进一步说明,保存时对象中的列表为空,但数据库中有子记录。hibernate似乎在持久化孤立删除,因为它在表上运行SQL de

冬眠:4.3.11 Spring Boot JPA:1.3.3 使用JPA注释

Hibernate正在级联到我试图保存并试图删除孤立对象的一个对象中的列表。当注释上没有指定cascade并且cascade opphan默认为false时,有人能解释为什么它会尝试这样做吗?我已经尝试显式地将cascasde孤立项设置为false,结果相同。下面是与注释一起保存的类

编辑:为了进一步说明,保存时对象中的列表为空,但数据库中有子记录。hibernate似乎在持久化孤立删除,因为它在表上运行SQL delete以删除列表中不包含的子记录,即使未启用级联

hibernate似乎正试图处理departmentGroupQueueList以删除孤立项

    @Accessors(chain = true) // has to come before @Getter and @Setter
@lombok.Getter
@lombok.Setter
@lombok.EqualsAndHashCode(of = {"id", "parentId"})
// @lombok.ToString()
@Entity
@Table(name="department")
public class Department implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "id", nullable = false)
    private Integer id;

    /* From Workflow Database Group, From Document Import Database Group,
     * From Workflow Admin Database Group */

    @ManyToOne
    @JoinColumn(name = "parent_id")
    private Department parentId;

    /* From Workflow Admin Database Group */
    @ManyToOne
    @JoinColumn(name = "doc_storage_location_id", nullable = false)
    private DocStorageLocation docStorageLocation;

    @Column(name = "d_name", nullable = false, length = 100)
    private String name;

    @Column(name = "d_active", nullable = false)
    private Boolean active;

    @Column(name = "d_description")
    private String description;

    /* From Document Import Database Group, From Workflow Database Group,
     * From Workflow Admin Database Group */
    @OneToMany(mappedBy = "department")
    private List<Doctype> doctypeList = new ArrayList<Doctype>(0);

    /* From User Security Database Group */
    @ManyToMany
    @JoinTable(name = "department_groups", joinColumns = {@JoinColumn(name = "department_id", nullable = false)},
            inverseJoinColumns = @JoinColumn(name = "group_id", nullable = false))
    private List<Groups> groups = new ArrayList<Groups>(0);

    /* From Workflow Admin Database Group */
    @OneToMany(mappedBy = "department")
    private List<DocIndexSet> docIndexSetList = new ArrayList<DocIndexSet>(0);

    /* From Workflow Admin Database Group */
    @OneToMany(mappedBy = "department")
    private List<QueueAllowDepartment> queueAllowDepartmentsList = new ArrayList<QueueAllowDepartment>(0);

    /* From User Security Database Group, From Workflow Database Group,
     * From Document Import Database Group, From Workflow Admin Database Group */
    @OneToMany(mappedBy = "department")
    private List<Users> departmentUsersList = new ArrayList<Users>(0);

    /* From Search Database Group */
    @OneToMany(mappedBy = "department")
    private List<SaveSearchCriteria> saveSearchCriteriaList = new ArrayList<SaveSearchCriteria>(0);

    /* From Workflow Database Group */
    @OneToMany(mappedBy = "department")
    private List<DocAttach> docAttachList = new ArrayList<DocAttach>(0);

    /* From Auditing Database Group */
    @OneToMany(mappedBy = "department")
    private List<AuditReason> auditReasonList = new ArrayList<AuditReason>(0);

    /* From User Security Database Group */
    @OneToMany(mappedBy = "department")
    private List<UsersDepartment> usersDepartmentList = new ArrayList<UsersDepartment>(0);

    /* From Workflow Database Group, From Document Import Database Group,
     * From Workflow Admin Database Group */
   /* @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_id")
    private List<Department> subDepartmentList = new ArrayList<Department>(0);*/

    /* From Document Import Database Group */
    @OneToMany(mappedBy = "department")
    private List<DocumentImport> documentImportList = new ArrayList<DocumentImport>(0);

    /* From Workflow Admin Database Group */
    @OneToMany(mappedBy = "department")
    private List<Tag> departmentTagList = new ArrayList<>(0);

    /* From Department Admin Database Group */
    @OneToMany(mappedBy = "authorizingDept")
    private List<DepartmentTrust> deptAuthorizing = new ArrayList<>(0);

    /* From Department Admin Database Group */
    @OneToMany(mappedBy = "authorizedDept")
    private List<DepartmentTrust> deptAuthorized = new ArrayList<>(0);

    @OneToMany(mappedBy = "department")
    private List<DepartmentGroupsDoctype> departmentGroupsDoctypeList = new ArrayList<>(0);

    @OneToMany(mappedBy = "department", orphanRemoval = false)
    private  List<DepartmentGroupsQueue> departmentGroupsQueueList = new ArrayList<>(0);

    @OneToMany(mappedBy = "id")
    private List<Department> subDepartments = new ArrayList<>(0);
}
编辑: 该应用程序正在使用Struts2 MVC框架。Department对象是由Struts在表单子委员会上创建的。下面是从表单save上运行的方法中剪下的一个片段。dao对象正在从Spring注入

public String update() {

    if(getModel().getParentId().getId() == null){
        getModel().setParentId(null);
    }

    setModel(departmentDao.update(getModel()));

    return "editResult";
}

传递给update()的部门来自哪里?它是如何填充的?它使用Struts2框架,该框架通过表单的保存填充department对象。我将从Struts操作中粘贴代码,该操作将对象传递给dao。我仍在努力解决这个问题,并认为问题可能实际上存在于我的多个关联中。您需要加载和更新现有的持久性实例,即直接将传入数据绑定到从数据库加载的实例,或者将填充的实例中的值复制到持久性实例。
public String update() {

    if(getModel().getParentId().getId() == null){
        getModel().setParentId(null);
    }

    setModel(departmentDao.update(getModel()));

    return "editResult";
}