0
我有一種情況,當我希望它在一對多時沒有發生延遲加載。很顯然,我對此很陌生。當我調用s.getSongComposers()時,爲什麼SongComposers不會被抓取?不完全理解延遲加載
這裏是我的DAO類:
public class SongDAOImpl implements SongDAO {
@PersistenceContext
private EntityManager em;
@Override
@SuppressWarnings(value = { "unchecked" })
public List<Song> getAllSongsOnAlbum(int albumID) {
Query q = em.createQuery("SELECT s FROM Song s WHERE s.album.albumID = :albumid ORDER BY s.songName");
q.setParameter("albumid", albumID);
List<Song> list = (List<Song>) q.getResultList();
for (Song s: list) {
s.getSongComposers();
}
return list;
}
}
這裏是我的歌實體:
@Entity
@Table(name="songs")
public class Song {
@Id
@GeneratedValue
@Column(name="SongID")
private int songID;
@Column(name="SongName")
private String songName;
@Column(name="Length")
private int length;
@ManyToOne
@JoinColumn(name="AlbumID", referencedColumnName="AlbumID")
private Album album;
@OneToMany(mappedBy="song")
private List<SongComposer> songComposers;
.... all getters/setters ......
}
這裏是我的SongComposer實體:
@Entity
@Table(name="song_composer")
public class SongComposer {
@Id
@GeneratedValue
@Column(name="SongComposerID")
private int songComposerID;
@ManyToOne
@JoinColumn(name="SongID", referencedColumnName="SongID")
private Song song;
@ManyToOne
@JoinColumn(name="ComposerID", referencedColumnName="ComposerID")
private Composer composer;
..... getters/setters .......
}
非常感謝!我不得不在那裏打一個DISTINCT。這似乎是與Hibernate不同的行爲,我認爲它會自動地調用getter來引入子記錄。 – badgerduke