2009-09-01 8 views
1

J'ai modifié l'exemple de livre d'or fourni avec google app engine (java) pour inclure une relation parent-enfant en utilisant une sorte de 'self join'.auto-rejoindre dans google app engine (java)

Maintenant, mon fichier greeting.java ressemble à ceci

package guestbook; 

import java.util.Date; 
import java.util.List; 

import javax.jdo.annotations.IdGeneratorStrategy; 
import javax.jdo.annotations.IdentityType; 
import javax.jdo.annotations.PersistenceCapable; 
import javax.jdo.annotations.Persistent; 
import javax.jdo.annotations.PrimaryKey; 

import com.google.appengine.api.datastore.Key; 
import com.google.appengine.api.users.User; 

@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class Greeting { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key id; 

    @Persistent 
    private User author; 

    @Persistent 
    private String content; 

    @Persistent 
    private Date date; 

    @Persistent 
    private Greeting parent; 

    @Persistent(mappedBy="parent") 
    private List<Greeting> children; 

    public Greeting getParent() { 
     return parent; 
    } 

    public void setParent(Greeting parent) { 
     this.parent = parent; 
    } 

    public List<Greeting> getChildren() { 
     return children; 
    } 

    public void setChildren(List<Greeting> children) { 
     this.children = children; 
    } 

    public Greeting(User author, String content, Date date) { 
     this.author = author; 
     this.content = content; 
     this.date = date; 
    } 

    public Key getId() { 
     return id; 
    } 

    public User getAuthor() { 
     return author; 
    } 

    public String getContent() { 
     return content; 
    } 

    public Date getDate() { 
     return date; 
    } 

    public void setAuthor(User author) { 
     this.author = author; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 
} 

Notez l'ajout des champs parents et de l'enfant, et en changeant le type de clé primaire à com.google.appengine.api.datastore.Key (comme affiché en http://code.google.com/appengine/docs/java/datastore/relationships.html#Owned_One_to_Many_Relationships)

Maintenant, il ne sauvegarde pas les données dans le magasin de données. Je n'arrive pas à comprendre pourquoi. J'ai essayé de supprimer le datastore local et le fichier d'index (comme indiqué quelque part sur le Web) mais cela ne fonctionnera pas. pas d'exceptions, rien.

Quelqu'un peut-il examiner et s'il vous plaît aider

Répondre