删除List的方法无效

时间:2015-06-09 08:45:34

标签: grails

我在一个控制器中创建一个会话变量 - :

List<Employee> emp = new ArrayList<Employee>()
emp = Employee.findAllByLevel(proj_lev.level_no)
session.employee_list = emp

render(view: "add_members", model: [proj_lev:proj_lev , proj_lev_right:proj_lev_right , employee:session.employee_list])

在另一个控制器中,我正在访问会话变量并使用List的remove方法,但列表没有改变 - :

render "${session.employee_list}"
def emp_added = Employee.get(params.int('employee_id'))
session.employee_list.remove(emp_added)
render "${session.employee_list}"

GSP中的视图是 - :

 [tearp.Employee : 2, tearp.Employee : 5, tearp.Employee : 8, tearp.Employee : 9, tearp.Employee : 10][tearp.Employee : 2, tearp.Employee : 5, tearp.Employee : 8, tearp.Employee : 9, tearp.Employee : 10]

2 个答案:

答案 0 :(得分:0)

列出要删除的员工列表,然后从“添加的员工”中删除此列表,并将此列表添加到“所有员工”

答案 1 :(得分:0)

您是否覆盖Employee域对象上的等于方法?我认为这是问题所在。

当你这样说时(没有覆盖equals方法):

session.employee_list.remove(emp_added)

它将首先通过其哈希码搜索列表中的对象,并且每次使用Employee.get(..)从db获取对象时,hibernate甚至为同一记录创建新对象,因此每个新对象都有新的哈希码和{{只要在列表中找不到对象,方法就不会工作。

可能的解决方案:

在您的list.remove()域类中添加此方法:

Employee
相关问题