forked from Abdulbari/sgeUpdated
Fix issue in updating datacenter
Found a hibernate cascade issue and was fixed by reuse the existing collection instaed of creating a new one in updating the datacenter entity
This commit is contained in:
@@ -32,9 +32,9 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
||||
|
||||
@Autowired
|
||||
public DataCenterMapper(AreaService areaService, SectorService sectorService,
|
||||
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
||||
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
||||
ActivitySubUnitService activitySubUnitService) {
|
||||
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
||||
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
||||
ActivitySubUnitService activitySubUnitService) {
|
||||
this.areaService = areaService;
|
||||
this.sectorService = sectorService;
|
||||
this.subSectorService = subSectorService;
|
||||
@@ -91,16 +91,19 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
||||
|
||||
// Set EmissionSource
|
||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
||||
dcEmissionSource.setEmissionSource(emissionSourceService.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||
dcEmissionSource.setEmissionSource(emissionSourceService
|
||||
.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||
}
|
||||
|
||||
// Set ConsuptionUnit
|
||||
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService
|
||||
.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||
}
|
||||
|
||||
// Set optional fields
|
||||
dcEmissionSource.setIsDefault(emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||
dcEmissionSource.setIsDefault(
|
||||
emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
||||
|
||||
dataCenterEmissionSources.add(dcEmissionSource);
|
||||
@@ -154,28 +157,31 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
||||
|
||||
// Handle multiple emission sources update if provided
|
||||
if (input.getDataCenterEmissionSources() != null) {
|
||||
// Clear existing emission sources and add new ones
|
||||
// Clear existing emission sources from the managed collection
|
||||
entity.getDataCenterEmissionSources().clear();
|
||||
|
||||
List<DataCenterEmissionSource> dataCenterEmissionSources = new ArrayList<>();
|
||||
// Add new emission sources to the same managed collection
|
||||
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
||||
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
||||
dcEmissionSource.setDataCenter(entity);
|
||||
|
||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
||||
dcEmissionSource.setEmissionSource(emissionSourceService.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||
dcEmissionSource.setEmissionSource(emissionSourceService
|
||||
.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||
}
|
||||
|
||||
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService
|
||||
.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||
}
|
||||
|
||||
dcEmissionSource.setIsDefault(emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||
dcEmissionSource.setIsDefault(
|
||||
emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
||||
|
||||
dataCenterEmissionSources.add(dcEmissionSource);
|
||||
// Add to the existing managed collection instead of creating a new one
|
||||
entity.getDataCenterEmissionSources().add(dcEmissionSource);
|
||||
}
|
||||
entity.setDataCenterEmissionSources(dataCenterEmissionSources);
|
||||
}
|
||||
|
||||
// New attributes (partial update - only if provided)
|
||||
|
||||
Reference in New Issue
Block a user