Java 选择OneToMany查询jpql

Java 选择OneToMany查询jpql,java,jpql,Java,Jpql,我创建了两个实体Idee和Avis,它们有一个共同的关系。我想在Idee中选择集合。我试过了,但没用,我把阿维斯的桌子都拿出来了 从idee i JOIN i中选择avis。avis avis 我怎样才能纠正它 这是Idee.java @Entity @Table(name = "idee") public class Idee implements Serializable { private static final long serialVersionUID = 1L; @

我创建了两个实体Idee和Avis,它们有一个共同的关系。我想在Idee中选择集合。我试过了,但没用,我把阿维斯的桌子都拿出来了

从idee i JOIN i中选择avis。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;

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

在FROM子句中,您使用了错误的实体名称,即idee。你必须使用的要么是你没有给出的实体名称,要么是Idee实体的非限定类名。 用于i.avis的标识变量与实体类名称相同,根据规范,该名称无效,因为标识变量是大小写不敏感的avis==avis。 因此,您的查询应该修改为

SELECT a FROM Idee i JOIN i.avis a

使用@OneToManymappedBy=idee,cascade=CascadeType.ALL和@manytonecascade=CascadeType.ALL显示错误该查询不显示我正在处理的结果,这意味着它显示所有表avi,我只需要特定idee的集合。您是否尝试过对数据库进行等效查询。检查是否存在任何结果?您是否尝试过cascadeType?我用这种方式进行了更改,现在它可以工作了:List resultList=Listthis.entityManager.createQuery从idee x JOIN x.avis a中选择一个,其中x.id=:ideId.SetParameterId,ideId.getResultList;实体名是Idee,但表名是Idee,因为我使用的是MySQL数据库。JPQL与SQL类似,但不同,因此JP QL查询中不涉及表名。
SELECT a FROM Idee i JOIN i.avis a