Hibernate 4.3.11忽略级联FALSE

时间:2017-01-09 15:41:44

标签: java spring hibernate spring-data

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

Hibernate正在我尝试保存并试图删除孤儿的其中一个对象中级联到List。任何人都可以解释为什么它会在注释中没有指定级联时尝试这样做,而cascade-oprphan默认为false?我试图用相同的结果明确地将cascasde-orphan设置为false。下面是使用注释保存的类。

编辑:为了进一步说明,对象中的List在保存时为空,但db中有子记录。似乎hibernate持续使用孤立删除,因为它在表上运行SQL删除以删除未包含在List中的子记录,即使未启用级联也是如此。

hibernate似乎试图处理孤儿删除的departmentGroupQueueList。

UnlockBits

以下是DAO中保存对象的代码

return Redirect::to($url);

编辑: 该应用程序使用Struts2框架进行MVC。 Struts在表单submmission上创建了Department对象。下面是从表单上运行的方法剪切保存。 dao对象是从Spring注入的

    @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);
}

0 个答案:

没有答案