查询获取未附加到特定变量的数据 - JPA

时间:2015-10-14 10:50:17

标签: java database jpa many-to-many

我有一个Employee的表和一个Meeting变量(我也有一个会议表)。 MeetingEmployee之间的关系是many-to-many。是否可以编写一个JPA Query,它从数据库中获取附加到Meeting变量的所有Employees。如果是这样,查询是什么?另一个选择是获取所有Employees并查看哪些不在Meeting变量中,但可能很慢。任何想法我该怎么办?

1 个答案:

答案 0 :(得分:1)

例如,这是您的员工实体:

@Entity
public class Employee  {

    @ManyToMany(mappedBy="employee")
    private List<Meeting> meetings;
    ...
}
  

查询:从附加到的数据库中获取所有员工   会议变量

SELECT e FROM Employee e WHERE :meeting MEMBER OF e.meetings
  

查询:获取所有员工,并查看哪些员工不在会议中   变量

SELECT e FROM Employee e WHERE :meeting NOT MEMBER OF e.meetings

示例代码:

String query = "SELECT e FROM Employee e WHERE :meeting MEMBER OF e.meetings";

Meeting meeting = new Meeting();
meeting.setId(1);

TypedQuery<Employee> query = em.createQuery(query, Employee.class);
List<Employee> employeesInMeeting = query.setParameter("meeting", meeting).getResultList();  
// this will select all employees that has a meeting with id=1 in their list