JPQL:字段路径无法解析为集合类型

GPh*_*ilo 5 jpa jpql

我正在尝试根据用户可以选择的可能日期列表对日期进行搜索。使用日历,我要求用户输入日期,然后我要获取所有可能的数据包,这些数据包的“ data_possibile”列表中都包含该日期。

这是我正在使用的查询:

@NamedQuery(name="pacchettoPreconfigurato.findVendibileByData", query="SELECT p FROM PacchettoPreconfigurato p WHERE p.in_vendita=TRUE AND (:data) IN (p.date_possibili)")
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在服务器的日志中部署应用程序时,我得到:

Exception Description: Problem compiling [SELECT p FROM PacchettoPreconfigurato p WHERE p.in_vendita=TRUE AND (:data) IN (p.date_possibili)]. [81, 97] The state field path 'p.date_possibili' cannot be resolved to a collection type.
Run Code Online (Sandbox Code Playgroud)

这是p.date_possibili的定义方式:

@OneToMany(orphanRemoval=true)
@JoinColumn(name="id_pp")
private List<DataPossibilePP> date_possibili;
Run Code Online (Sandbox Code Playgroud)

其中DataPossibilePP为:

@Entity
@IdClass(DataPossibilePPPK.class)
public class DataPossibilePP implements Serializable {     
    @Id
    private Integer id_pp;   
    @Id
    private Date data;
    private static final long serialVersionUID = 1L;
    /*standard getters and setters*/
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我被告知该字段不是集合,即使它被定义为列表并且Eclipse本身也会在其自动完成功能中建议我。

如何编写查询以使其编译?

JB *_*zet 5

in运营商无法在集合中。应该将其用于作为参数传递给查询的值的列表或子选择。

您可能正在寻找member of运算符,该运算符测试某个参数是否是集合的一部分:

select student from Student student where :course member of student.courses
Run Code Online (Sandbox Code Playgroud)