Spring

Spring JPA 주어진 식별자를 가진 둘 이상의 행

기록만이살길 2021. 3. 5. 09:04
반응형

Spring JPA 주어진 식별자를 가진 둘 이상의 행

1. 질문(문제점):

이 문제에 대한 다른 솔루션을 시도했지만 문제는 여전히 존재합니다. 이것은 오류입니다.

org.hibernate.HibernateException : 주어진 식별자를 가진 둘 이상의 행이 발견되었습니다 : 1, for class : CO3102.hw2.domain.records at org.hibernate.loader.entity.AbstractEntityLoader.load (AbstractEntityLoader.java:86) ~ [ org.hibernate.loader.entity.EntityLoader.loadByUniqueKey (EntityLoader.java:143) ~ [hibernate-core-5.0.11.Final.jar에서 hibernate-core-5.0.11.Final.jar : 5.0.11.Final] : 5.0.11.Final] at org.hibernate.persister.entity.AbstractEntityPersister.loadByUniqueKey (AbstractEntityPersister.java:2122) ~ [hibernate-core-5.0.11.Final.jar : 5.0.11.Final] at org.hibernate .type.EntityType.loadByUniqueKey (EntityType.java:692) ~ [hibernate-core-5.0.11.Final.jar : 5.0.11.Final] at org.hibernate.type.EntityType.resolve (EntityType.java:434) ~ [hibernate-core-5.0.11.Final.jar : 5.0.11.Final] at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity (TwoPhaseLoad.java : 154) ~ [hibernate-core-5.0.11.Final.jar : 5.0.11.Final]

내가 한 일 : 이름, 백신 ID, 복용량 등의 레코드 클래스가 있습니다.이 백신 ID 섹션에 백신 행을 저장하고 있지만 이제 사용자를 더 추가하면 위의 오류가 발생합니다. 나는 여기에서 많은 해결책을 시도했지만 그들은 나를 위해 작동하지 않으므로 누군가가 도울 수 있다면 제발. 여기 내 레코드 수업이 있습니다. 다른 솔루션은 fetch.type = lazy를 추가하는 것에 대해 이야기했지만 여전히 오류가 발생합니다.

레코드 클래스

@OneToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name ="Vaccine_vaccineID")
private Vaccine vaccine;

백신 클래스

@Id
String vaccineID;
String Name;
VaccineType type;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "vaccine")
private records record;

문제를 다시 설명하겠습니다. 2 개의 가능한 백신 (a, b)이 있고 ID는 1과 2입니다. 따라서 분명히 여러 사용자가 백신에 대해 동일한 ID를 갖기를 원합니다. 이 작업을 잘못하고 있습니까? 실제로 행을 저장하는 대신이 대신 숫자 1을 저장해야합니까?

누구든지이 문제에 대한 해결책을 제공 할 수 있다면 나는 매우 감사 할 것입니다. 제프

2. 해결방안:

달성하고 싶은 것은 다 대일 관계입니다. 다음을 시도하십시오.

기록

@ManyToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name ="Vaccine_vaccineID")
private Vaccine vaccine;

백신

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "vaccine")
private List<Record> records;
65745153
반응형