1 Reply Latest reply on May 8, 2012 4:49 AM by vyacheslav86

    Bug in collection audit processing:

    vyacheslav86

      I add some elements to next collection using set method:

       

      @ManyToMany(fetch = FetchType.LAZY)

          @JoinTable(name = "CONTRACT_SERVICES", joinColumns = {@JoinColumn(name = "CONTRACT_ID")}, inverseJoinColumns = {@JoinColumn(name = "SERVICE_ID")})

          @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)

          private List<ContractAddService> addServices = new ArrayList<ContractAddService>(0);

       

          public List<ContractAddService> getAddServices() {

              return addServices;

          }

         

          public void setAddServices(List<ContractAddService> addServices) {

              this.addServices = addServices;

          }

       

      after that i change collection content using the same set method:

       

              Contract contract = contractService.get(contractId);
              for (Iterator<Long> iterator = ids.iterator(); iterator.hasNext();) {




      Long addId=  iterator.next();




      ContractAddService service = addService.getSrvsById(addId);




      servList.add(service);



      }
              contract.setAddServices(servList);
              contractService.update(contract);

       

      Envers logs such change as :

       

       

      REVCONTRACT_IDSERVICE_IDREVTYPE
      760739540
      760739550
      760739560
      760739570
      760739580
      760739590
      7607395100
      760839530
      760839540
      760839550
      760839560
      760839570
      760839580
      760839590
      7608395100
      7608395110
      760939530
      760939540
      760939550
      760939580
      760939590
      7609395100
      7609395110

       

      It looks like all old rows/elements of collection are added again, because they have 0 revtype. Also when quiried with <= envers hql querie deleted entities appears as existing ones because there are no DEL REVTYPE rows created for them.

       

      Is that normal behaviour or envers must process set of collection elements in other way?