选择包含list的实体,其中list参数具有特定值

时间:2016-07-25 08:23:34

标签: java hibernate

我有两个表,第一个包含员工:

@Entity
public class Employee {
@Id
@GeneratedValue
private long id;
private String firstName;
private String lastName;
private double Salary;
@ManyToMany(mappedBy = "employees")
private List<Project> projects;
//getters and setters
}

第二个包含项目:

@Entity
public class Project {
@Id
@GeneratedValue
private long id;
private String name;
@ManyToMany
private List<Employee> employees;
//getters and setters
}

我想选择目前正在项目中工作的所有员工,例如&#34; ProjectOne&#34;。什么是在hibernate中编写此查询的最佳方法,是否有使用TypedQuery的选项?或者我需要使用普通的查询?我试着写一些像:

Query query= entityManager.createQuery("select e,p from Employee e, Project p where p.name='ProjectOne' ");
List<Employee>queryResultList=query.getResultList();

我已经从hibernate得到了一些回应,但这是一个奇怪的参考,我无法正确阅读。

编辑:我认为答案会更容易。如果查询返回2个值,首先必须将其转换为Object [],然后可以从object [0]转换第一个值(Employee),从object [1]转换第二个(Project):

Iterator iterator=queryResultList.iterator();
    while(iterator.hasNext()){
        Object[] object= (Object[]) iterator.next();
        Employee emp= (Employee) object[0];
        Project proj= (Project) object[1];
        System.out.println(emp.getFirstName()+" "+emp.getLastName()+" at project "+proj.getName());
    }

0 个答案:

没有答案