Java queryDSL如何使用接口?

Java queryDSL如何使用接口?,java,jdo,querydsl,Java,Jdo,Querydsl,我有一组实现相同接口的类。例如: public interface Employee{ private String name; public void work(); public String getName(); } @PersistenceCapable(detachable = "true") public class Accountant implements Employee{ } @PersistenceCapable(detachable = "

我有一组实现相同接口的类。例如:

public interface Employee{
    private String name;

    public void work();
    public String getName();
}

@PersistenceCapable(detachable = "true")
public class Accountant implements Employee{
}


@PersistenceCapable(detachable = "true")
public class Secretary implements Employee{
}
以及另一个包含Employee实现的类:

public class Department{
     private ArrayList<Employee> employees;

     public ArrayList<Employee> getEmployees();
}
公共课部{
私人ArrayList员工;
公共数组列表getEmployees();
}
我想得到一份员工名为“玛丽”的部门名单。我应该如何放置jdo查询?我是否缺少对员工界面的注释

我怀疑生成的Q类是不正确的。我得到

public final SimplePath<java.util.ArrayList<Employee>>
public final SimplePath

在生成的Q类中。它不应该是
ListPath
而不是
SimplePath

这里有两个问题

  • Employee
    未被识别为实体类型,因为它没有注释
  • ArrayList
    在Querydsl中不是受支持的列表类型,仅支持集合接口

考虑注释
Employee
,并使用
List
而不是
ArrayList

您还可以提供相关注释吗?将注释添加到问题中,谢谢!1.Employee是数据库中不存在的接口,而Accounter和Secretary确实存在。我应该给员工做什么样的注释?2.这意味着只支持直接子接口?对于JDO,没有MappedSuperclass,所以我不知道。接口是受支持的,它们只是不会自动转换为Q类型,注释就是这样。所以我应该把@QueryEntity放在Employee?它应该是@QuerySupertype,但JDOAnnotationProcessor目前不支持它,我在部署新更改后为它创建了一个票证,生成的代码应该是ListPath,如果我将其更改为List,是否正确?