2009-07-30 7 views
1

J'ai une relation unowned dans mon modèle de domaineGAE unowned relation JPA

@Entity 
public class A { 
@Id 
private String id; 
private Key firstB; 
private Key secondB; 

// getters & setters 
} 

@Entity 
public class B { 
@Id 
private Key id; 
private String name; 
// getter & setter 
} 

KeyFactory.createKey(B.class.getSimpleName(), name) est la façon dont je Générez la clé pour la classe B

Je sauve B indépendamment de A et de lui attribuer à une instance de quelque temps. Le problème est qu'après avoir sauvegardé les deux champs firstB et firstA sont null.

Une idée de ce que je fais mal?

+0

Pour référence, la question se rapporte à ceci: http://code.google.com/appengine/docs/java/datastore/relationships.html#Unowned_Relationships –

Répondre

1

Key Les objets ne sont pas conservés par défaut, ils nécessitent donc une annotation explicite, c'est pourquoi vous voyez des valeurs null.

Essayez annoter firstB et secondB comme @Enumerated (cela devrait vraiment être @Basic mais there is a bug which prevents this from working):

@Entity 
public class A { 
    @Id 
    private String id; 

    @Enumerated 
    private Key firstB; 

    @Enumerated 
    private Key secondB; 
} 

Mise à jour: Le dernier SDK et DataNucleus JARs permettent désormais correctement l'utilisation de @Basic.

+0

Ce n'était pas dans les documents officiels, donc merci pour l'indice! – dlinsin

+0

Comme il s'avère avec le dernier SDK et les derniers jar de datanucleus, @Basic fonctionne aussi bien. – dlinsin

+0

Merci pour la mise à jour, je vais l'ajouter à la réponse. –