有关hibernate一对多关系的级联保存和级联删除例子

在没有实际编程之前,看过一些关于hibernate级联保存和级联删除的内容,记得当时我看明白了,后来实践编码的时候才发现原来还是理解的不透彻。今天我做了一个有关的编码,在这里分享给大家,希望对大家有用

Task.xml(这是“一”的一方)


    
        
            
            
            
TASK_SEQ
            
        
        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

         inverse="true" cascade="delete"
>
            
                
            

            
        
    

TaskDetail.xml(这是“多”的一方)


    
        
            
          

            
TASK_DETAIL_SEQ
            
        
        
            
        

        cascade="save-update"
>
            
        
        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

        
            
        

    


测试类

public void testInsertTask() {
Date limitTime = new Date(2011-1900, 9, 5);
Task task = new Task();
task.setYear(2011);
task.setContent("任务的详细信息");
task.setIsFeedback("否");
task.setLimitTime(limitTime);
DepSec depSec = actionService.listTarget().get(2);
task.setDepSec(depSec);
task.setName("任务1");

TaskDetail detail = new TaskDetail();

detail.setTask(task);

detail.setStatus("未查看");

List list = this.companyService.listAllCompanyExceptJX();

for (Company company : list) {

detail.setCompany(company);
this.taskDetailService.insert(detail);
}

}

public void deleteTask(int id){
Task task = this.taskService.findById(id);
this.taskService.delete(id);
}

总结:要想达到级联保存的效果,需要在“多”的一方配置cascade=“save-update”;“一”的一方配置inverse=“true”

             要想达到级联删除的结果,需要在“多”的一方配置cascade=“delete”

你可能感兴趣的:(Hibernate相关)