我有一个歌曲课程,其中包含与 CoverArt 课程
的惰性关联@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
@JoinColumn(name = "recNo")
private List<CoverArt> coverArts;
很好,我通常不需要CoverArt对象,但是有时候我需要
那我该如何修改
之类的方法public static List<Song> getSongsWithCoverArtFromDatabase(Session session, List<Integer> ids)
{
Criteria c = session
.createCriteria(Song.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(Restrictions.in("recNo", ids));
List<Song> songs = c.list();
return songs;
}
以便它检索每首歌曲的CoverArt
答案 0 :(得分:1)
您可以使用setFetchMode
中的Criteria
如下所述在运行时设置获取模式,
Criteria c = session
.createCriteria(Song.class)
.setFetchMode("coverArts", FetchMode.EAGER)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(Restrictions.in("recNo", ids));
有关更多信息,请https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FetchMode.html和https://kodejava.org/how-do-i-set-the-fetch-mode-for-criteria-association/