2017-04-10 4 views
1

Je suis un utilisateur la mise en œuvre classe:GreenDAO relation ToOne ne fonctionne pas

@Entity 
public class User implements Serializable { 

    /** Serial version UID */ 
    static final long serialVersionUID = 200L; 

    @Id 
    /** The user system id */ 
    private long id; 

    @Index(unique = true) 
    /** The user login username*/ 
    private String username; 

    /** The user first name */ 
    private String firstName; 

    /** The user last name*/ 
    public String lastName; 

    @ToOne 
    @NotNull 
    /** The company this user belongs*/ 
    private Company company; 

    ... 
} 

et Société

@Entity 
public class Company extends JsonModel implements Serializable { 

    /** Serial version UID */ 
    static final long serialVersionUID = 100L; 

    @Id 
    /** The sqlite record id */ 
    private long id; 


    @NotNull 
    /** The company public name */ 
    private String name; 

... 

} 

Le @ToOne devrait fonctionner bien parce que je peux voir le produit UserDao avec Instruction TABLE:

public final static Property Company = new Property(6, long.class, "company", false, "COMPANY"); 

Pendant le flux de l'application I créer une instance d'utilisateur (pas de base de données) et lui affecter un objet Company.

Alors je l'appelle:

UserDao userDao = daoSession.getUserDao(); 
userDao.insert(user); 

Cependant mon application ne parvient pas en précisant que la société ne peut pas être nulle. Lorsque j'ouvre la classe UserDao générée, je vois que bindValues ​​ne crée jamais une société avant de sauvegarder l'utilisateur.

@Override 
    protected final void bindValues(DatabaseStatement stmt, User entity) { 
     stmt.clearBindings(); 
     stmt.bindLong(1, entity.getDbId()); 
     stmt.bindLong(2, entity.getId()); 

     String username = entity.getUsername(); 
     if (username != null) { 
      stmt.bindString(3, username); 
     } 

     String firstName = entity.getFirstName(); 
     if (firstName != null) { 
      stmt.bindString(4, firstName); 
     } 

     String lastName = entity.getLastName(); 
     if (lastName != null) { 
      stmt.bindString(5, lastName); 
     } 
    } 

Que dois-je faire pour que les entités enfants soient créées?

EDIT

OK Je viens de lire que des relations ne sont pas gérées automatiquement par ORM. Je ne vois pas beaucoup d'avantages à utiliser la libhe hehe ..

Répondre

0

OK Je viens de lire que les relations ne sont pas gérées automatiquement par ORM.

Donc, je devrais insérer l'entreprise avant.