JPQL:在查询中访问继承的属性

时间:2016-05-31 12:16:05

标签: java mysql jpa eclipselink

我用JPA(Eclipse Link)实现了这个 Classes(我无法发布图片)

现在我正在设置一个查询,向我展示特定教师上课的所有学期。

Query query2 = em
   .createQuery("FROM Semester s, IN (s.lesson) l, IN(l.lessonTeacher) lT1 WHERE lT1.teacher.lastname = :lastname");
query.setParameter("lastname", "Spooner");
List<Semester> resultList2 = query.getResultList(); 
for(Semester s : resultList2){
    System.out.println(s.getname());
}

我的问题是:lT1.teacher.lastname =:lastname 我无法访问继承的属性。

The state field path 'lT1.teacher.lastname' cannot be resolved to a valid type.

可以帮助吗?

1 个答案:

答案 0 :(得分:0)

问题不在于继承属性。您必须在下面添加另一个连接(到Teacher表)到您的查询以解决此问题:

Query query2 = em
   .createQuery("FROM Semester s, IN (s.lesson) l, IN(l.lessonTeacher) lT1, lT1.teacher t WHERE t.lastname = :lastname");
query.setParameter("lastname", "Spooner");
List<Semester> resultList2 = query.getResultList(); 
for(Semester s : resultList2){
    System.out.println(s.getname());
}