@Override
  public void unlink() {
    super.unlink();

    getIntervalBlocks().clear();
    getRelatedLinks().clear();
    setReadingType(null);
    setUsagePoint(null);
  }
  @Transactional
  @Override
  public void merge(IdentifiedObject resource) {

    super.merge(resource);

    for (IntervalBlock bl : ((MeterReading) resource).getIntervalBlocks()) {

      // TODO: Validate that the UUIDs are equal!!
      if (this.intervalBlocks.contains(bl)) {
        this.intervalBlocks.remove(bl);
      }
      this.intervalBlocks.add(bl);
    }

    if (((MeterReading) resource).readingType != null) {
      this.readingType = ((MeterReading) resource).readingType;
    }
    if (((MeterReading) resource).usagePoint != null) {
      this.usagePoint = ((MeterReading) resource).usagePoint;
    }
  }