Supposons qu'un propriétaire possède une collection de Watch (s). J'essaye de créer des montres et d'ajouter les montres nouvellement créées à la collection de montres d'un propriétaire existant (une arraylist).GAE JPA DataNucleus Création d'objets One-to-Many
Ma méthode est la suivante:
public void add(String ownerName, String watchName) {
Owner o = new OwnerDAO().retrieve(ownerName); //retrieves owner object without fail
EntityManager em = EMF.get().createEntityManager();
EntityTransaction t = em.getTransaction();
Watch w = new Watch(watchName);
Owner owner = em.merge(o);
t.begin();
owner.getWatches().add(w);
t.commit();
em.close();
}
Le code fonctionne dans l'environnement GAE local sans problème, mais a donné le problème suivant quand il est sur l'environnement GAE en ligne:
org.datanucleus.store.mapped.scostore.FKListStore$1 fetchFields: Object "[email protected]" has a collection "package.Owner.watches" yet element "[email protected]" doesnt have the owner set. Managing the relation and setting the owner
. Puis-je savoir comment résoudre ce problème? Je vous remercie!
Les entités:
Propriétaire:
@id
private String name;
@OneToMany(mappedBy = "owner",
targetEntity = Watch.class, cascade = CascadeType.ALL)
private List<Watch> watches= new ArrayList<Watch>();
montre:
@id
private String name;
@ManyToOne()
private Owner owner;
Merci beaucoup à l'avance!
, Cordiales salutations
Jason
Honnêtement, je ne sais pas si cette question devrait se fermer en double ou non, mais le fait est que il y a beaucoup de (très) des questions similaires: http://stackoverflow.com/questions/ 2 600021/1m-relation-en-hibernate-and-cascading-operations, http://stackoverflow.com/questions/2921314/hibernate-annotated-many-to-one-not-adding-child-to-parent-collection, etc. Je suppose que c'est juste difficile de les trouver quand vous ne savez pas ce que vous cherchez. –
Merci, Pascal! Tu as raison; Tout ce que j'avais, c'était le message d'erreur, et je n'avais aucune idée de la direction à suivre pour trouver la réponse. J'ai essayé de chercher des solutions basées sur le message d'erreur mais en vain. – Jason
Vous avez fait un très bon point ici et je crois maintenant que cette question pourrait être utile lorsque googling pour le même "message d'erreur". –