【发布时间】:2021-01-30 16:54:09
【问题描述】:
我有这样一个问题:当我懒加载集合时,它会抛出一个异常。我使用了Transactional注解Hibernate.initialize,但是在加载集合时仍然报错。只有 EAGER 有帮助,但使用起来太贵了。
实体:
public class Release extends AbstractEntity {
...
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "releases_artists",
joinColumns = @JoinColumn(name = "release_id"),
inverseJoinColumns = @JoinColumn(name = "artist_id")
)
private Set<Artist> artists = new HashSet<>();
...
}
抛出异常的类:
@Transactional
public class ReleaseXmlReader extends XmlReaderArrays<Release> {
...
@Override
protected void handle(Release release) {
Release releaseFromDb = releaseRepository
.findFirstByFonalId(release.getFonalId()).orElse(null);
if (releaseFromDb != null) {
for (Artist artist : release.getArtists()) {
if (releaseFromDb.getArtists() <-- HERE
.stream()
.noneMatch(artist1 -> artist1.getDiscogsArtistId() != null)
) {
....
releaseRepository.save(releaseFromDb);
}
}
父抽象类:
@Transactional
public abstract class XmlReaderArrays<T extends AbstractEntity> {
....
public void parse() {
try {
XMLStreamReader reader = XMLInputFactory
.newInstance()
.createXMLStreamReader(inputStream);
XmlMapper mapper = new XmlMapper();
while (next(reader)) {
limit--;
try {
T obj = mapper.readValue(reader, type);
handle(obj); <--- HERE
} catch (Exception e) {
log.error("Error parse xml", e);
}
}
} catch (Exception e) {
log.error("Error parse xml", e);
}
}
...
}
我尝试仅将注释与父类或仅与继承者匹配。我也尝试将注释放在方法上,但没有帮助。
【问题讨论】:
标签: java spring spring-boot hibernate hibernate-mapping