2015-12-10 1 views
0

Я пытаюсь удалить элемент из списка. У меня есть таблица с именем InvItem и другая таблица с именем InvItemLoc. Когда я добавляю элемент, идентификатор таблицы InvItem используется как внешний ключ в таблице InvItemLoc. Но когда я удаляю элемент, строка дочерних таблиц не удаляется. Теперь мне нужно создать список таблицы InvItemLoc с помощью идентификатора InvItem, который в настоящее время находится в таблице InvItem и с определенной организацией. Но когда я собираюсь проверить, что если он соответствует InvItemLoc с таблицей InvItem, он дает эту ошибку ->No row with the given identifier exists: [inv.InvItem#9666]. Теперь может кто-нибудь, пожалуйста, помогите мне в этом, пожалуйста? !!! Вот моя попытка ниже ::Как удалить элемент из списка def в grails

def items = InvItemLoc.findAllByAaOrgId(aaOrg) 
       List<InvItemLoc> found = new ArrayList<InvItemLoc>(); 
       for(InvItemLoc item : items){ 
        def invItem = InvItem.findById(item.invItemId.id) 
        if(!invItem){ 
         found.add(item); 
        } 
       } 
       items.removeAll(found); 

он дает ошибку на этой линии >> def invItem = InvItem.findById(item.invItemId.id)

EDIT :: Домен

Мой InvItemLoc домен выглядеть, как показано ниже >>>

class InvItemLoc { 
    static mapping = { 
     ... 
    } 

    Long id 
    InvItem invItemId 
    ... 

    static constraints = { 
     ... 

    } 
} 

Домен INVItem выглядит следующим образом >>>

class InvItem { 
    static mapping = { 
     ... 
    } 

    Long id 
    ... 

    static constraints = { 
     ... 
    } 

     String toString() { 
     ... 
    } 
} 
+0

Это звучит, как вы могли бы извлечь выгоду из двунаправленной связи между '' InvItem' и InvItemLoc'. Как выглядят ваши классы домена? –

+0

@EmmanuelRosa благодарит за ваш ответ. Я обновил свой пост с помощью класса домена. Не могли бы вы сейчас помочь? !! –

ответ

0

Вы можете создать ассоциацию one-to-many между классами домена. Затем Grails может удалить детей для вас, когда вы удалите родителя. InvItemLoc нуждается в belongsTo статическом имуществе, добавленном афером invItemId имущество удалено. InvItem нуждается в hasMany статическое имущество добавлено.

class InvItemLoc { 
    ... 
    static belongsTo = [item: InvItem] 
} 

class InvItem { 
    static hasMany = [locations: InvItemLoc] 
    ... 

} 

Создание

Это изменяет способ классы домена создаются и сохраняются.

def loc = new InvItemLoc() 
// set loc properties. 

def item = new InvItem() 
item.addToLocations(loc) 
// Set other item properties. 

item.save() 

Короче говоря, вы добавляете места в объект, а затем сохраняете элемент, который, в свою очередь, сохраняет места.

Удаление

Затем вы можете удалить просто так: item.delete()

Смежные вопросы