spring jpa具有给定标识符的多行

pkmbmrz7  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

我试过其他方法来解决这个问题,可惜这个问题仍然存在。这是错误:
org.hibernate.hibernateexception:找到多个具有给定标识符的行:1,对于类:co3102.hw2.domain.records,位于org.hibernate.loader.entity.abstractentityloader.load(abstractentityloader)。java:86)~[hibernate-core-5.0.11.最终版本。jar:5.0.11.final]在org.hibernate.loader.entity.entityloader.loadbyuniquekey(entityloader。java:143)~[hibernate-core-5.0.11.最终版本。jar:5.0.11.final]在org.hibernate.persister.entity.abstractentitypersister.loadbyuniquekey(abstractentitypersister。java:2122)~[hibernate-core-5.0.11.最终版本。jar:5.0.11.final]在org.hibernate.type.entitytype.loadbyuniquekey(entitytype。java:692)~[hibernate-core-5.0.11.最终版本。jar:5.0.11.final]在org.hibernate.type.entitytype.resolve(entitytype。java:434) ~[hibernate-core-5.0.11.最终版本。jar:5.0.11.final]在org.hibernate.engine.internal.twophaseload.doinitializeentity(twophaseload。java:154)~[hibernate-core-5.0.11.最终版本。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;

我会再次解释这个问题,所以有两种可能的疫苗(a,b),它们的id是1和2。所以很明显,我希望多个用户拥有相同的疫苗id。我这样做是不是错了-我应该在这个地方保存一个数字1而不是实际保存行吗?
如果有人能为我提供这个问题的解决方案,我将非常感激。杰夫

iq0todco

iq0todco1#

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

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

相关问题