У меня возникли проблемы с получением спящего режима для возврата графа правильно заполненного объекта, когда в элементе содержится объединение во многих коллекциях.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";
- набор изменений имеет много ChangeEntries
- ChangeEntry имеет один RepositoryEntity
- RepositoryEntity имеет одно хранилище
выше оператор возвращает правильные данные, но граф объекта неправильно заполнен - то есть, каждый набор изменений содержит каждое изменение и не только это собственные дети.
Вот соответствующие фрагменты этих двух классов:
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;
Любая помощь очень ценится
С уважением
Marty
Вы добавили информацию о сопоставлении для репозитория, а не для ChangeSet в ChangeEntry. – rudolfson
Спасибо - я добавил Changeset –