我想做一個搜索ob用戶提供的一些變量的基礎。HQL where子句用String集合類型
我在做什麼,從表收集數據實現:
這裏是我的實體:
@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();
但與無效的語法給予例外。
我不知道我錯在哪裏。可能是我做錯了方式。
是問題是同樣喜歡
Issue when trying to use the IN operator in a JPQL query
但是,它的觀點略有不同,即我在這裏使用字符串類型的集合在我的實體。而當我想在這裏使用的一員,它不是與工作,並拋出一個異常
org.hibernate.hql.internal.ast.QuerySyntaxException:樹[從com.tutor.entity的意外結束。 FrontRequest frontreq where frontreq.tutorialCity like'%'and:tutorialsubject會員的frontreq.tutorialSubjects]
請幫忙。
在此先感謝。
[嘗試在JPQL查詢中使用IN運算符時出現問題]的可能重複(http://stackoverflow.com/questions/32631930/issue-when-trying-to-use-the-in-operator-in -a-jpql-query) –
這裏我使用字符串類型集合而不是用戶定義的類型。 –