[英]Filter is not working on JPQL query of one to many relationship
我創建了以下課程,即老師和學生。
@Entity
@Table(name="Student")
public class Student {
@Id
@Column(name = "cmp_id")
private String cmpId;
@OneToOne(cascade = CascadeType.REFRESH)
@JoinColumn(name = "teacherid", referencedColumnName = "teacherid")
private Teacher teacher;
@OneToOne
@JoinColumn(name = "typeid", referencedColumnName = "typeid")
private Type type;
}
@Entity
@Table(name="Teacher")
public class Teacher {
@Id
@Column(name = "teacherid")
private String teacherid;
@Column(name = "teachername")
private String teachername;
@OneToMany(mappedBy = "Teacher", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@OrderBy("cmpSequence ASC")
private List<Student> std;
}
@Entity
@Table(name="Type")
public class Type{
@Id
@Column(name = "typeid")
private Integer typeid;
@Column(name = "uitype")
private String uitype;
}
老師是家長班,學生是小學班。我希望所有老師和他們的學生使用過濾器typeid是1,但它不起作用。
SELECT teacher FROM Teacher teacher WHERE teacher.std.typeid = 1
java.lang.IllegalArgumentException:在EntityManager中創建查詢時發生異常:異常描述:編譯查詢時出現問題。狀態字段路徑“teacher.std.typeid”無法解析為有效類型。
你的查詢錯了。 你有Teacher
有std( Student
),std有類型( Type
)和類型有類型ID字段。 所以你的查詢應如下所示:
SELECT teacher FROM Teacher teacher
JOIN FETCH teacher.std AS s
INNER JOIN s.type as t
WHERE t.typeid = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.