Hbernate hql для многих и многих - PullRequest
0 голосов
/ 20 июня 2020

У меня есть два класса с отношениями «многие ко многим»

@Table(name="employe")

public class Employe implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int Id_emp;
    @Column(unique=true)
    private String username;
    @ManyToMany
    @JoinTable(name="produit_employe",joinColumns=@JoinColumn(name="id_employe"),inverseJoinColumns
            =@JoinColumn(name="id_produit"))
    private List<Produit> produits =new ArrayList<Produit>();
///}

Entity
@Table(name="Produit")
public class Produit implements Serializable {
    
    @Id
    private int id_produit;
    
    private String nom_produit;
    
    @ManyToMany(mappedBy="produits")
    private List<Employe> employes=new ArrayList<Employe>();

//}

Как я могу отобразить название продукта, присвоенное каждому сотруднику. как в примере, который я сделал с sql, я хотел бы преобразовать его в hql.

select p.nom_produit from produit_employe pe, produit p where pe.id_produit=p.id_produit AND

pe.id_employe=2

1 Ответ

1 голос
/ 21 июня 2020

При использовании hql мы должны думать в терминах сущностей, а не таблиц, как в sql.

Это эквивалент hql:

select p.nom_produit from Employe e join e.produits p where e.Id_emp = 2

Я тестировал он использует Spring Data JPA, и это код, используемый в репозитории сотрудников:

@Query("select p.nom_produit from Employe e join e.produits p where e.Id_emp = :employeId")
List<String> getProductNameAssignedToEmployee (@Param("employeId") Integer employeId);
...