比较相同对象的两个表并选择不同的对象

时间:2015-07-29 07:35:14

标签: java hibernate hibernate-criteria

我有一个名为EmployeeTask的联合表,由Employee和Task加入。

关系:员工(ONE)----(MANY)EmployeeTask(MANY)----(ONE)任务。

现在我有一名员工,并使用他的员工ID 查找已分配给该员工的所有 employeeTask ,并且随后找到所有 任务 对应每个employeeTask到表中。

接下来,我将数据库中的所有 任务 放到另一个表中。

最后,我想找出尚未分配给该员工的任务列表

我使用的工具是 hibernate条件,语言是 JAVA

任何人都可以帮忙,请。

--- --- EDIT

这段代码将为我提供给予员工的所有任务

ArrayList<EmployeeTask> employeeTasks = EmployeeTaskDAO.getEmployeeTasksByEmployee(employee);
JSONArray tasksArr = new JSONArray();
for(EmployeeTask et : employeeTasks){
    Task t = TaskDAO.getTaskById(et.getTask().getTaskId());
    tasksArr.add(t.toJson());
}

getEmployeeTasksByEmployee 的方法

public static ArrayList<EmployeeTask> getEmployeeTasksByEmployee(Employee employee){
    ArrayList<EmployeeTask> employeeTasks = new ArrayList<EmployeeTask>();
    if(employee != null){
        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(EmployeeTask.class);
        detachedCriteria.add(Restrictions.eq(Key.EMPLOYEE, employee));
        List<Object> list = HibernateUtil.detachedCriteriaReturnList(detachedCriteria);
        for(Object o : list){
            employeeTasks.add((EmployeeTask) o);
        }
    }
    return employeeTasks;
}

获取所有任务的方式与上面的代码示例非常相似。

现在我完全迷失了找到尚未分配给该员工的其余任务的方法。我接近的方式是什么?有帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

没有模型很难说些什么,但你可以尝试使用别名来加入你的三个表。有javadoc和一些examples可用。

要获得未分配的任务,您可以添加 NotEqual 限制@VytautasAlkimavičius。