比较相同对象的两个表和 select 不同的对象
Compare two tables of the same objects and select the different ones
我有一个名为 EmployeeTask 的联合 table,由 Employee 和 Task 加入。
关系:员工 (ONE)----(MANY) EmployeeTask (MANY)----(ONE) 任务。
所以现在我有一个员工,我使用他的 员工 ID 找到所有 employeeTask这个employee已经分配到,随后找到所有的Task对应每个employeeTask变成一个table.
接下来,我将数据库中的所有 Task 放入另一个 table.
最后,我想找出尚未分配给该员工的任务列表。
我使用的工具是hibernate criteria,语言是JAVA
谁能帮忙,拜托。
---编辑---
这段代码将为我提供给定 employee:
的所有 Task
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 and some examples 可用。
要获得未分配的任务,您可以添加 NotEqual 限制 @VytautasAlkimavičius 提到。
我有一个名为 EmployeeTask 的联合 table,由 Employee 和 Task 加入。
关系:员工 (ONE)----(MANY) EmployeeTask (MANY)----(ONE) 任务。
所以现在我有一个员工,我使用他的 员工 ID 找到所有 employeeTask这个employee已经分配到,随后找到所有的Task对应每个employeeTask变成一个table.
接下来,我将数据库中的所有 Task 放入另一个 table.
最后,我想找出尚未分配给该员工的任务列表。
我使用的工具是hibernate criteria,语言是JAVA
谁能帮忙,拜托。
---编辑---
这段代码将为我提供给定 employee:
的所有 TaskArrayList<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 and some examples 可用。
要获得未分配的任务,您可以添加 NotEqual 限制 @VytautasAlkimavičius 提到。