我有一个名为 Artwork 的实体,它有一个名为subject的成员,使用另一个实体映射多对多,如下所示 .
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List subjects;
假设在我的 Artwork 表中我有一个主题值为 (ArtSubject1, ArtSubject2, ArtSubject3) 的记录
我必须用 (ArtSubject5, ArtSubject6, ArtSubject7) 替换这个值 .
完全不同的列表 .
Curretly如果我用 (ArtSubject5, ArtSUbject6, ArtSubject7) 保存 Artwork 对象的新数据 .
JPA将其附加到已存在的列表中,结果数据为 (ArtSubject1, ArtSubject2, ArtSubject3, ArtSubject5, ArtSUbject6, ArtSubject7)
我希望它只是 (ArtSubject5, ArtSubject6, ArtSubject7)
请找到我保存ArtSubject并将其设置为Artwork对象的方法 .
ArtWork artwork = new ArtWork();
List subject = new ArrayList<>();
List style = new ArrayList<>();
Artist artist = new Artist();
List artCollections = new ArrayList<>();
// Classifying Collections into each category.
for (Collection collection : collections) {
String tokens[] = collection.getTitle().split("_");
if (tokens == null || tokens.length < 2) {
LOGGER.info("Invalid Collection Type: Collection type {} not recognised",
collection.getTitle());
continue;
}
String collectionType = tokens[0];
switch(collectionType) {
case "subject":
ArtSubject artSubject = new ArtSubject(collection.getId(),
collection.getTitle().split("_")[1]);
subject.add(artSubject);
artSubjectRepository.save(artSubject);
break;
default:
LOGGER.info("Invalid Collection Type: Collection type {} not recognised",
collection.getTitle());
break;
}
}
artwork.setSubject(subject);
在此之后我将艺术品保存为artRepository(CRUD存储库) artRepository.save(artwork) 请帮助我 .
提前致谢!