我创建两个实体Idee和Avis,它们具有OneToMany关系。我想选择Idee中的收藏。我尝试这样做,但是它不起作用,我显示了avis的所有表格。
从同上选择avis我加入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;
最佳答案
您的查询无法正常工作的原因可能与以下原因有关:
在FROM
子句中,您使用了错误的实体名称,即idee
。您必须使用的是实体名称(未提供)或实体的无限定类名称Idee
。
您用于i.avis
的标识变量与实体类名称相同,根据规范,该名称无效,因为该标识变量是不区分大小写的(avis == Avis
)。
因此,您的查询应修改为
SELECT a FROM Idee i JOIN i.avis a
关于java - 选择OneToMany查询jpql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42949639/