Сохранять список объектов - PullRequest
0 голосов
/ 14 января 2010

Я получил это "javax.jdo.JDOFatalUserException: ошибка в метаданных для don.Comment.id: не может иметь первичный ключ java.lang.String и быть дочерним объектом (владельцем поля является don.Post.comments). NestedThrowables: "

при запуске моего грааля + веб-приложение движка приложения

Как это исправить?

class Comment.groovy

import javax.jdo.annotations.*;

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
class Comment implements Serializable {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
String id

@Persistent(mappedBy="comments")
Post post

@Persistent
String name

@Persistent
String email

@Persistent
String url

static constraints = {
    id( visible:false)
}
}

class Post.groovy
    @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
    class Post implements Serializable {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
Long id

@Persistent
String title

@Persistent 
String content

//static hasMany = [comments:Comment]

@Persistent(defaultFetchGroup = "true")
Comment comments

static constraints = {
    id( visible:false)
}
}

1 Ответ

2 голосов
/ 15 января 2010

Для дочерних классов первичным ключом должно быть значение com.google.appengine.api.datastore.Key (или закодированное в виде строки), см. http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys

...