select一对多查询jpql

select OneToMany query jpql

我创建了两个实体 Idee 和 Avis,它们具有 OneToMany 关系。我想 select Idee 中的集合。我尝试了这个,但它不起作用我显示了 avis 的所有 table。

SELECT avis FROM idee i JOIN i.avis avis

我该如何更正它?

这是Idee.java

@Entity
@Table(name = "idee")
public class Idee implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column
    private String titre;
    @Column
    private String description;

    @Column
    private String theme;

    @Column
    private String type;

    @OneToMany(mappedBy = "idee")
    private Collection<Avis> avis;
    @ManyToOne
    @JoinColumn(name="user_id")
    private Utilisateur user;

这是Avis.java

@Entity
@Table(name = "avis")
public class Avis implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column
    private String commentaire;
    @Column
    private int score;

    @Column
    private Boolean signaler;

    @Column
    private Boolean satisfaction_utilisateur;

    @ManyToOne
    @JoinColumn(name = "idee_id")
    private Idee idee;


    @ManyToOne
    @JoinColumn(name="user_id")
    private Utilisateur user_avis;

您的查询不起作用的原因可能与以下原因有关:

  1. FROM 子句中,您使用了错误的实体名称,即 idee。你必须在那里使用的是实体的名称(你没有给出)或实体的不合格 class 名称,即 Idee.
  2. 您为 i.avis 使用的标识变量与实体 class 名称相同,根据规范该名称无效,因为标识变量不区分大小写(avis == Avis).

因此您的查询应修改为

SELECT a FROM Idee i JOIN i.avis a