繁体   English   中英

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

[英]Compare two tables of the same objects and select the different ones

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

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

因此,现在我有了一个员工,并使用他的员工ID查找该员工已分配给的所有employeeTask ,然后在表中找到与每个employeeTask对应的所有Task

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

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

我使用的工具是休眠标准 ,语言是JAVA

谁能帮忙,请。

- -编辑 - -

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

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;
}

获取所有Task的方式与上述代码示例非常相似。

现在,我真的迷失了寻找尚未分配给该员工的其余任务的方式。 我将如何处理? 有什么帮助吗? 谢谢!

而不是在两个表中搜索差异。 我决定在javascript中存储两个不同的对象数组,并比较这两个数组以取出不常见的对象数组。

没有模型很难说些什么,但是您可以尝试使用别名来连接三个表。 javadoc和一些示例

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM