2011-04-18 5 views
4

j'ai un élément de niveau supérieur que je sauve la base de données, et il a plusieurs éléments étrangers, quelque chose comme ceci:ORMLite mises à jour des membres étrangers

@DatabaseTable 
public class Parent { 
    @DatabaseField(id = true, index = true) 
    public Integer id; 

    @DatabaseField(foreign = true) 
    public ChildA a; 
} 

@DatabaseTable 
public class ChildA { 
    DatabaseField(generatedId = true, index = true) 
    public Integer id; 

    @DatabaseField 
    public boolean something; 
} 

En supposant ceux-ci ont déjà été créés dans la base de données. Et maintenant je veux les mettre à jour. Appellera parentDao.update(parent) mettre à jour les deux? Ou dois-je également mettre à jour manuellement l'enfant?

Répondre

7

La réponse courte est:

non, il ne sera pas mettre à jour les deux

objets étrangers ne sont pas des objets proxy donc il n'y a aucun moyen pour ORMLite de déterminer si le sous-objet a été modifié et doit être mis à jour. Donc, si vous changez les deux objets puis Parent et ChildA vous auriez à faire quelque chose comme:

childADao.update(parent.a); 
parentDao.update(parent); 

De toute évidence, si vous définissez une nouvelle Childa le parent alors il mettra à jour cette nouvelle id dans la table parent .