Je vais avoir du mal à obtenir une mise en veille prolongée sélectionnez pour retourner un objet graphique correctement rempli, lorsque la sélection contient des jointures dans de nombreuses collections.Mise en veille prolongée - Sélection sur plusieurs collections se joint à
Par exemple:
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";
- Un Changeset a beaucoup ChangeEntries
- A ChangeEntry a un RepositoryEntity
- A RepositoryEntity a un dépôt
La déclaration ci-dessus renvoie les données correctes, mais le graphe d'objets n'est pas correctement rempli - c.-à-d., chaque ensemble de modifications contient chaque élément ChangeE ntry, pas seulement ses propres enfants.
Voici les extraits pertinents de ces deux classes:
public class Changeset {
@NotNull
@OneToMany(mappedBy="changeset", targetEntity=ChangeEntry.class, cascade={CascadeType.ALL }, fetch=FetchType.EAGER)
private Set<IChangeEntry> changeEntries;
Et ...
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;
Toute aide est grandement appréciée
Cordialement
Marty
Vous avez ajouté les informations de mappage pour Repository, pas pour ChangeSet dans ChangeEntry. – rudolfson
Merci - J'ai ajouté Changeset –