我在使用Hibernate进行查询时遇到了问题,当查询中涉及多个集合的连接时,无法返回正确填充的对象图。
例如:
String sql = "select distinct changeset " +
"from Changeset changeset " +
"join fetch changeset.changeEntries as changeEntry " +
"join fetch changeEntry.repositoryEntity as repositoryEntity " +
"join fetch repositoryEntity.repository as repository " +
"where repository.connectionName = :connectionName";
- 一个Changeset有多个ChangeEntries
- 一个ChangeEntry有一个RepositoryEntity
- 一个RepositoryEntity有一个Repository
以上语句返回了正确的数据,但对象图未正确填充--即,每个Changeset都包含了所有的ChangeEntry,而不仅仅是自己的子项。
以下是这两个类的相关代码片段:
public class Changeset {
@NotNull
@OneToMany(mappedBy="changeset", targetEntity=ChangeEntry.class, cascade={CascadeType.ALL }, fetch=FetchType.EAGER )
private Set<IChangeEntry> changeEntries;
并且...
public class ChangeEntry {
@NotNull
@ManyToOne(targetEntity=Changeset.class)
@ForeignKey(name="FkChangeEntryChangeset")
private IScmChangeset changeset;
@NotNull
@ManyToOne(targetEntity=RepositoryEntity.class, cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@ForeignKey(name="FkChangeEntryRepoEntity")
private IRepositoryEntity repositoryEntity;
任何帮助都将不胜感激。
敬礼,
马蒂