0

What is the Groovy way to get collection items without items in subcollection. For example:

collection: [1,2,3,4,5,6]

subcollection: [1,5,6]

the result should be: [2,3,4]

EDIT: It looks I'm doing something wrong. This is part of my code:

    def report = Report.get(params.report.id)
    def user = User.get(params.user.id)
    List<User> availableUsers = []
    availableUsers = User.findAllByCompany(company))

    List<User> addedUsers = []
    addedUsers = (List<User>) session["addedUsers"] ?: []
    addedUsers << user
    session["addedUsers"] = null
    session["addedUsers"] = addedUsers

    availableUsers = availableUsers - addedUsers        

This code is only removing last user in addedUsers list.

availableUsers: [John, Jack, Jim]

addedUsers: [John, Jack]

availableUsers - addedUsers: [John, Jim]

Every time only the last item in addedUsers gets removed. I'm guessing I'm missing something obvious but I cant find it.

4

1 回答 1

4

您是否尝试过明显的:

result = [ 1, 2, 3, 4, 5, 6 ] - [ 1, 5, 6 ]

因为那是有效的...

编辑

在会话中存储域对象将导致对象在休眠事务之间有所不同,最好将 id 存储在会话中并让用户每次都保持新鲜(或者如果需要持久化,则将此功能写入域中),例如:

addedUsers = session["addedUsers"].collect { User.get( it.id ) } ?: []
于 2013-04-25T13:40:54.283 回答