-1
Groovy的新功能。所以我有一個超Groovy(Grails)命名參數構造函數不會設置超類字段
class AbstractClass {
User user
}
和子類
class Category extends AbstractClass {
String name
}
,當我嘗試創建在BootStrap.groovy中的對象(我使用的Grails),如:
User user1 = new User(...).save(failOnError: true)
// I know user1 is properly created
def category1 = new Category(User: user1, name: 'alice').save(failOnError: true)
好,我的問題是用戶字段未被設置。它是空的。這已經改變了:以前,我不是保存用戶,而是保存了它的ID(Long id),它正在工作。我在這裏錯過了什麼魔法?
當我更改代碼:
def category1 = new Category(User: user1, name: 'alice')
category1.setUser user1
category1.save(failOnError: true)
它工作得很好,所以我想一定是我丟失的東西在這裏。
感謝您的幫助!
在第一種情況下,grails可能不會將用戶持久保存到數據庫,它可能只是在Hibernate Session中 - 您能否嘗試添加flush:true爲您保存用戶的語句並查看是否作品?例如。新用戶(...)。save(flush:true,failOnError:true) – bschipp
謝謝bschipp,但它是一個錯字。用戶應該是用戶。 – ldepablo