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
|
@Autowired
|
||||||
public DataCenterMapper(AreaService areaService, SectorService sectorService,
|
public DataCenterMapper(AreaService areaService, SectorService sectorService,
|
||||||
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
||||||
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
||||||
ActivitySubUnitService activitySubUnitService) {
|
ActivitySubUnitService activitySubUnitService) {
|
||||||
this.areaService = areaService;
|
this.areaService = areaService;
|
||||||
this.sectorService = sectorService;
|
this.sectorService = sectorService;
|
||||||
this.subSectorService = subSectorService;
|
this.subSectorService = subSectorService;
|
||||||
@@ -91,16 +91,19 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
|||||||
|
|
||||||
// Set EmissionSource
|
// Set EmissionSource
|
||||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
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
|
// Set ConsuptionUnit
|
||||||
if (emissionSourceInput.getConsuptionUnitId() != 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));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set optional fields
|
// Set optional fields
|
||||||
dcEmissionSource.setIsDefault(emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
dcEmissionSource.setIsDefault(
|
||||||
|
emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||||
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
||||||
|
|
||||||
dataCenterEmissionSources.add(dcEmissionSource);
|
dataCenterEmissionSources.add(dcEmissionSource);
|
||||||
@@ -154,28 +157,31 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
|||||||
|
|
||||||
// Handle multiple emission sources update if provided
|
// Handle multiple emission sources update if provided
|
||||||
if (input.getDataCenterEmissionSources() != null) {
|
if (input.getDataCenterEmissionSources() != null) {
|
||||||
// Clear existing emission sources and add new ones
|
// Clear existing emission sources from the managed collection
|
||||||
entity.getDataCenterEmissionSources().clear();
|
entity.getDataCenterEmissionSources().clear();
|
||||||
|
|
||||||
List<DataCenterEmissionSource> dataCenterEmissionSources = new ArrayList<>();
|
// Add new emission sources to the same managed collection
|
||||||
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
||||||
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
||||||
dcEmissionSource.setDataCenter(entity);
|
dcEmissionSource.setDataCenter(entity);
|
||||||
|
|
||||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
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) {
|
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());
|
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)
|
// New attributes (partial update - only if provided)
|
||||||
|
|||||||
Reference in New Issue
Block a user