2014-09-22 5 views
0

Привет, я действительно не понимаю, что это не работает, но im 99% уверен, что это проблема GORM.grails отношения GORM

вот мои домены:

Class Product{ 
    String name 
    static hasMany = [parts:Parts] 
    static mappedBy = [parts:'product'] 
} 


Class Parts{ 
    Product product 
    static hasMany = [alternatives:Alternatives] 
} 

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

Product p = new Product(name:"test") 
Product part1 = Product.get(2) 
Product part2 = Product.get(3) 
Parts c = new Parts(product: part1).save(flush:true,failOnError:true) 
Parts c2 = new Parts(product: part2).save(flush:true,failOnError:true) 

p.addToParts(c) 
p.addToParts(c2) 

p.save(flush:true,failOnError:true) 

Это не вызывает ошибок, но также не оставляет ничего в базе данных.

Любые идеи?

+0

Не должно быть 'static hasMany = [parts: Parts]' в 'Product' вместо? – dmahapatro

+0

изменил его. Это похоже на мой код. Это не работает – Sagarmichael

+0

означает, что он должен быть o2m или m2m между продуктом и частью? – injecteer

ответ

0
Product p = new Product(name: "test") 
Product part1 = Product.get(2) 
Product part2 = Product.get(3) 

p.addToParts(new Parts(product: part1)) 
p.addToParts(new Parts(product: part2)) 
p.save(flush: true, failOnError: true) 

Лучший способ сделать это состоит в создании новых деталей в пределах вашего .addToParts() вызова.

Также кажется, что у вас должно быть static belongsTo = Product в пределах вашего класса Parts. (Только для того, чтобы одна сторона отношения «многие-ко-многим» сохранялась, может вызвать меньшую путаницу)

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