具有字符串集合类型的 HQL where 子句



我想对用户提供的一些变量进行搜索。

我正在做什么来实现表收集中的数据:

这是我的实体:

@Entity
@Table
public class FrontRequest implements Serializable { 
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Long tutorfront_id;
    @Column
    private String tutorialType;
    @Column
    private String tutorialLevel;
    @ElementCollection(fetch=FetchType.EAGER)
    @Fetch(value = FetchMode.SELECT)
    private Collection<String> tutorialSubjects= new HashSet<String>();
    @Column
    private String tutorialCity;
    @Column
    private String noOfStudent;
    @Column
    private String classWeek;
    @Column
    private String tutionFee;
    @Column
    private String tutionFeerate;
    @Column
    private String tutorSex;
    @Column
    private String tutorEducation;

    @Column
    private Date postingDate;
    @Column
    private String studentSchool;
}

现在我想获取 FrontRequest 对象作为列表,这里我有一个主题作为输入。

现在我想在 FrontRequest.TutorialSubjects 中获取 FrontRequest 主题。

为此,我尝试执行以下操作:

Query query=session.createQuery("from FrontRequest frontreq where :tutorialsubject IN frontreq.tutorialSubjects");
query.setParameter("tutorialsubject", tutorialSubject);
 List<FrontRequest> frontRequest=query.list();

但它给出语法无效的异常。

我不知道我错在哪里。可能是我做错了。

是的,问题是一样的

尝试在 JPQL 查询中使用 IN 运算符时出现问题

但是,它与此略有不同,即我在我的实体中使用字符串类型集合。当我尝试使用这里的成员时,它不起作用并抛出异常

org.hibernate.hql.internal.ast.QuerySyntaxException: 子树的意外结束 [来自com.tutor.entity.FrontRequest frontreq 其中 frontreq.tutorialCity like '%' 和 :tutorialsubject MEMBER OF frontreq.tutorialSubjects]

请帮忙。

提前谢谢。

最后,我已经解决了 where 子句中"In elements"的问题。

查询为:

 from FrontRequest frontreq where :tutorialsubject IN elements (frontreq.tutorialSubjects)
query.setParameter("tutorialsubject", tutorialSubject);
 List<FrontRequest> frontRequest=query.list();

感谢所有人,应该给它+1。

最新更新