Как сохранить несколько строк данных, просматривая массив или карту? - PullRequest
0 голосов
/ 06 апреля 2011
Class Buyer {
   String name
   static constraints = {
   }
}
Class Order {
    String ref
    static belongsTo = [buyer:Buyer]
    static constraints = {
    buyer(nullable:false)
    }
}

In OrderController.groovy

...
def someAction = {
  //working
  def data1 = ["buyer.id": 2, "ref": "xyz"]
  def ord = new Order(data1);
  ord.save();

  def data2 = ["buyer.id": 2, "ref": "234xyz"]
  def ord2 = new Order(data2);
  ord2.save();


  //But in a loop - its not working
  def items = ['abc', 'def', 'ghi', 'jkl']
  def data2 = [:]
  for(e in items) {
     data2 = ["buyer.id": 2, "ref" : e.value] //keeping buyer id same
     def ord = new Order(data2);
     ord.save();
     data2 = [:] //just emptying it?
  }
}

Как вы заметили в «работе» выше, если я смогу сохранить несколько строк, вставив копию и определив новые карты, но если я попытаюсь пройтись по массиву, это не сработает. Любые идеи, как я могу сохранить данные, проходя через массив или карту?

Любые вопросы, пожалуйста, дайте знать Спасибо

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Во-первых, я не уверен насчет ["buyer.id": 2, "ref" : e.value], я думаю, это должно быть [buyer: Buyer.get(2), ref : e.value].

Во-вторых, я бы рекомендовал использовать каскадное сохранение для выполнения задачи.Вы можете попробовать что-то вроде этого (Вам необходимо определить отношение static hasMany = [orders: Order] в отношениях Покупатель для заказа покупателя.

Buyer b = new Buyer(name: "foo")
for(e in items) {
     def ord = new Order(ref: e.value);
     b.addToOrders(ord)
  }

b.save(flush:true)
0 голосов
/ 06 апреля 2011

Вы просто должны быть в состоянии сделать:

def someAction = {
  def items = ['abc', 'def', 'ghi', 'jkl']
  items.each { item ->
     def ord = new Order( [ 'buyer.id':2, ref:item ] )
     ord.save()
  }
}

Какие ошибки (если есть) вы получаете?

Кроме того, почему вы делаете e.value?Это даст вам массив символов, а не строки (это то, что использует ваш первый рабочий пример)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...