cascade=cascadetype.all not working is spring data jpa不工作

f2uvfpb9  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(246)

我有两个模型,如下所示:
1.

public class LaboratoryTransaction extends Transaction {

     @ManyToMany
     @JoinTable(name = "lab_txn_complaints_symptoms",
            joinColumns = @JoinColumn(name = "lab_txn_id"),
            inverseJoinColumns = @JoinColumn(name = "symptom_id"))
     private Set<SymptomsDirectory> symptoms = new HashSet<>();

    @ManyToMany
    @JoinTable(name = "lab_txn_provisional_diagnosis",
            joinColumns = @JoinColumn(name = "lab_txn_id"),
            inverseJoinColumns = @JoinColumn(name = "dieases_id"))
    private Set<DiseaseDirectory> provisional_diagnosis = new HashSet<>();

    @OneToMany(mappedBy = "laboratoryTransaction", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    private Set<LaboratoryTransactionDetail> laboratoryTransactionDetails = new HashSet<>();

    public LaboratoryTransaction addLabTnxDetail(LaboratoryTransactionDetail transaction) {
        laboratoryTransactionDetails.add(transaction);
        //transaction.setLaboratoryTransaction(this);
        return this;
    }

}
public class LaboratoryTransactionDetail extends Service {

     @JsonIgnore
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumn(name = "laboratoryTransactionId)
     private LaboratoryTransaction laboratoryTransaction;

     @ManyToOne
     @JoinColumn(name = "packageId")
     private LabPackages labPackages;

     @JsonIgnore
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "laboratoryTransactionDetail")
     private Set<ExperimentReadings> experimentResultsByParameters = new HashSet<>();

    public LaboratoryTransactionDetail addExperimentReading(ExperimentReadings experimentReadings) {
         this.experimentResultsByParameters.add(experimentReadings);
         experimentReadings.setLaboratoryTransactionDetail(this);
         return this;
    }
}

我有一个通过postMap接受json对象的api调用

@RestController
@RequestMapping("/api/v1")
public class Laboratory {
    private LaboratoryInvestigationService laboratoryInvestigationService;
    private LaboratoryTransactionService laboratoryTransactionService;
    private InvestigationGroupService investigationGroupService;

    public Laboratory(LaboratoryInvestigationService laboratoryInvestigationService,
                      LaboratoryTransactionService laboratoryTransactionService,
                      InvestigationGroupService investigationGroupService) {
        this.laboratoryInvestigationService = laboratoryInvestigationService;
        this.laboratoryTransactionService = laboratoryTransactionService;
        this.investigationGroupService = investigationGroupService;
    }

    @PostMapping("lab/transactions/add")
    LaboratoryTransaction addLabTxn(@RequestBody LaboratoryTransactionCommand laboratoryTransactionCommand){

        laboratoryTransactionCommand.setDateTransaction(LocalDate.now());
        return laboratoryTransactionService.add(laboratoryTransactionCommand);
    }
}

在我的服务层中,我实现了如下save

@Component
public class LaboratoryTransactionSDJPaService implements LaboratoryTransactionService {
    private LaboratoryTransactionRepository laboratoryTransactionRepository;
    private LabTxnCommandToLabTxn labTxnCommandToLabTxn;

    public LaboratoryTransactionSDJPaService(LaboratoryTransactionRepository laboratoryTransactionRepository,
                                             LabTxnCommandToLabTxn labTxnCommandToLabTxn) {
        this.laboratoryTransactionRepository = laboratoryTransactionRepository;
        this.labTxnCommandToLabTxn = labTxnCommandToLabTxn;
    }

    @Override
    public Set<LaboratoryTransaction> findAll() {
        Set<LaboratoryTransaction> laboratoryTransactions = new HashSet<>();
        laboratoryTransactionRepository.findAll().forEach(laboratoryTransactions::add);
        return laboratoryTransactions;
    }

    @Override
    public LaboratoryTransaction findByID(Long aLong) {
        return laboratoryTransactionRepository.findById(aLong).get();
    }

    @Override
    public LaboratoryTransaction add(LaboratoryTransaction object) {
        return laboratoryTransactionRepository.save(object);
    }

    @Override
    public LaboratoryTransaction add(LaboratoryTransactionCommand object) {
        LaboratoryTransaction lab = labTxnCommandToLabTxn.convert(object);
        return laboratoryTransactionRepository.save(lab);
    }

    @Override
    public void delete(LaboratoryTransaction object) {
        laboratoryTransactionRepository.delete(object);
    }

    @Override
    public void deleteById(Long aLong) {
        laboratoryTransactionRepository.deleteById(aLong);
    }

    @Override
    public void addCommand(LaboratoryTransaction object) {

    }
}

这是一个示例json对象
{“patientid”:197,“userid”:1,“datetransaction”:“2017-10-25”,“comment”:“double wahala”,“discount”:25,“presentingcomplains”:[],“temporationdiagnosis”:[],“laboratorytransactiondetailcommands”:[{“laboratoryinvestigationid”:23,“servicepricecocommand”:{“id”:13,“serviceprice”:“,”discountprice“,”tax“},“userdiscount”:23,“usediscountprice”:1,“comment”:“aruma oteh”,“交易时间”:“,”“交易日期”:“,

"packageId" : "",
    "experimentReadingCommands" :[]
}],
"referralId" : 1

}
每件事都很好,除了实验室事务细节(带有外键事务细节id)没有用事务id保存在db中。我将感谢任何帮助。谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题