Spring JPA 具有给定标识符的多行

Spring JPA More than one row with given identifier

这个问题我已经尝试了其他的解决方法,唉问题还是存在。这是错误:

org.hibernate.HibernateException: More than one row with the given identifier was found: 1, for class: CO3102.hw2.domain.records at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final] at org.hibernate.loader.entity.EntityLoader.loadByUniqueKey(EntityLoader.java:143) ~[hibernate-core-5.0.11.Final.jar: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]

我一直在做什么: 我有一条记录 class,其中包含名称、疫苗 ID、剂量等。我将疫苗行保存到此疫苗 ID 部分,但现在当我添加更多用户时,出现上述错误。我在这里尝试了很多解决方案,但它们对我不起作用,所以如果有人可以提供帮助,请提供帮助。这是我的记录 class。其他解决方案讨论了添加 fetch.type = lazy ,我已经这样做了,但仍然会出现错误。

记录class

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

疫苗class

@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 而不是实际保存行吗?

如果有人能为我提供这个问题的解决方案,我将不胜感激。杰夫

您可能想要实现的是多对一关系。 尝试以下操作:

记录

@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;