crm系统中用到的Hibernate oneToMany

写项目的过程中,时刻要去看项目需求,否则一旦有不一样的地方,改代码可是件特痛苦的事。

看项目需求时,就已经注意到这样一个问题。服务处理完成后,要对服务进行反馈,如果客户满意,则此单服务结束,状态改为已归档。若顾客不满意,服务状态则改为已分配,由客户经理继续处理,也可重新分配,由别的客户经理处理。但服务的处理是很重要的,每次的处理过程及反馈结果都应该被记录起来,我是这样实现的。

在服务表的基础上,新建一张处理记录表,用来记录每次的处理经过,外键为服务表的ID。

要实现的效果:保存反馈信息时,自动添加一条信息到处理记录表中。

我是这样写的,采用一对多的方式,在服务表中添加属性,此处省略不必要的代码:

public class CstService {//服务表
  private List<ServiceDealResult> serviceDealResult; //属性
    
    OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="cst_service_id")
    public List<ServiceDealResult> getServiceDealResult() {//在get方法上 设计一对多
        return serviceDealResult;
    }    
 }

要想实现一对多中,多方的数据自动添加,就需要在保存一方前,先set多方,然后保存,核心代码如下,因为set方法的参数是List,所以就需要先去数据库中取出来先前的记录,然后add最新的记录

List<ServiceDealResult>  list = serviceService.getOne(service.getSvrID()).getServiceDealResult();//获得先前的记录
list.add(serviceDealResult);//添加最新的记录
service.setServiceDealResult(list);//设置进service,service为服务表
serviceService.saveFeedback(service);//保存反馈信息,因为设置了级联,会自动保存处理记录信息

 

你可能感兴趣的:(crm系统中用到的Hibernate oneToMany)