Spring Boot & Hibernate - идентификатор экземпляра x был изменен на ноль - PullRequest
0 голосов
/ 05 июня 2019

У нас есть суперкласс для всех сущностей, называемый Heartcore с @MappedSuperclass.

@Id
private String id;

@Column(nullable = false)
@NonNull
private String uuid;

@NonNull
@Column(nullable = false)
private String kanton;

// specific Setter
public void setKanton(String kanton) {
  if (kanton != null) {
    id = uuid + "_" + kanton;
  }
  this.kanton = kanton;
}

public void setUuid(String uuid) {
  if (kanton != null) {
    id = uuid + "_" + kanton;
  }
  this.uuid = uuid;
}

У меня есть следующее однонаправленное отношение один к одному :

Дети-Entity

class OtoUniChild extends Heartcore {

@Id
private String id;

@OneToOne
@MapsId
private OtoUniParent otoUniParent;

public void setOtoUniParent(OtoUniParent otoUniParent) {
    if (otoUniParent != null) {
        if (StringUtils.isNoneBlank(otoUniParent.getUuid(), otoUniParent.getKanton())) {
            this.otoUniParent = otoUniParent;
            setUuid(otoUniParent.getUuid());
            setKanton(otoUniParent.getKanton());
            return;
        }
        throw new InvalidObjectException("Es wurde ein invalides Objekt übergeben!");
    }
    this.otoUniParent = null;
}

Когда я сохраняю родителя и ребенка, а затем пытаюсь получить ребенка из дочернего хранилища с помощью findById(149727fd-b0ce-4069-bcd9-d67fdbe69021_SG) Я только что получил ошибку "org.springframework.orm.jpa.JpaSystemException: identifier of an instance of x.data.OtoUniChild was altered from 149727fd-b0ce-4069-bcd9-d67fdbe69021_SG to null;". Я не знаю, как это может произойти!

* Spring Boot v.1.5.8.RELEASE

1 Ответ

0 голосов
/ 05 июня 2019

Я полагаю, что это связано с вдвойне определенным @Id в вашем классе OtoUniChild:

  • один раз в Heartcore суперклассе.
  • один раз в самой сущности

Хотя такое переопределение не разрешено с @MappedSuperclass, вам случается переопределять его с тем же именем и типом.Однако вы все еще можете ожидать, что некоторые методы увидят первые, а некоторые - вторые поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...