J'ai une tâche pour transformer les jointures externes gauche en jointures internes. J'ai travaillé avec Hibernate. je entités:Hibernate Inner join à la place left outter
@Entity
@Table("entity1")
public Entity1{
@Id
private Integer id;
@ManyToOne(fetch = FetchType.EAGER)
private Entity2 field;
}
@Entity
@Table("entity2")
public class Entity2{
@Id
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinTable(name = "entity3_entity2",
joinColumns = @JoinColumn(name="entity2_name")
inverseJoinColumns = @JoinColumn(name = "entity3_name"))
private Entity3 field;
}
@Entity
@Table("entity3")
public class Entity3{
@Id
private String name;
@OneToMany
private Set<Entity2> field;
}
Et je hql:
SELECT e1 FROM Entity1 e1 inner join fetch e1.field e2 inner join fetch e2.field where e1.id = ?1
Résultat SQL est:
select ... from entity1 inner join entity2 on ... left outer join entity3_entity2 on ...
Mais je dois chercher les dossiers de entity3 avec jointure interne sans requêtes SQL. Y a-t-il un moyen de le faire?
Hey Alexey, obtenez-vous des lignes en double dans ce scénario? – PSabuwala