Grails 1.3.6을 사용하고 있으며 저장을 올바르게 계단식으로 처리하는 데 문제가 있습니다. 문제는 특별히 두 개의 상위 클래스가있는 클래스에 있습니다.Grails/GORM이 잘못된 순서로 저장됩니다.
class Location {
String city
static hasMany = [authors: Author, publishers: Publisher]
}
class Author {
String name
static belongsTo = [location: Location]
static hasMany = [books: Book]
}
class Publisher {
String name
static belongsTo = [location: Location]
static hasMany = [books: Book]
}
class Book {
String title
static belongsTo = [author: Author, publisher: Publisher]
}
class Srv1Service {
static transactional = true
def loadData() {
def l1 = new Location(city: "London")
def a1 = new Author(name: "Graham Greene")
l1.addToAuthors(a1)
def p1 = new Publisher(name: "Some Press")
l1.addToPublishers(p1)
def b1 = new Book(title: "The Comedians")
a1.addToBooks(b1)
p1.addToBooks(b1)
l1.save()
}
}
나는 위의 loadData를 실행하면 예약 인스턴스가 오류의 결과로, 게시자 인스턴스 전에 저장은 "-null이 아닌 속성이 null 또는 과도 값을 참조 : 나는 시도하고있는 무슨의 단순화 된 버전이있다 : adhoc.Book.publisher ".
저는 약간의 성공으로 관계를 정의하는 다양한 방법을 시도했습니다. 나는 중간 저장을 시도하고 이것은 작동하지만 아이 데이터를 저장하면 상위 테이블이 업데이트된다는 것을 알 수 있습니다. 즉, Location, Author 및 Publisher 모두 버전 1로 업데이트됩니다. 또한 코드를 유지하고 싶습니다. 나는 가능한 한 간단합니다.) 테이블 연결을 피하고 싶습니다.
감사의 말을 전합니다.