У меня есть класс Song , который содержит ленивую ассоциацию с CoverArt class
@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
@JoinColumn(name = "recNo")
private List<CoverArt> coverArts;
Это нормально, мне обычно не нужен объект CoverArt, но иногда мне нужно
- Для эффективности SQL
- Поскольку я хочу использовать класс Song в EventThread, и пользователь может попытаться получить доступ к CoverArt вне HibernateSession, поэтому он не сможет работать
Итак, как бы я изменил метод, такой как
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 для каждой песни