2017-04-10 1 views
1

Ich bin ein Benutzer Klasse als Implementierung:GreenDAO TOONE Beziehung nicht funktioniert

@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; 

    ... 
} 

and Company

@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; 

... 

} 

Die @ToOne alles in Ordnung arbeiten sollte, weil ich die erzeugte UserDao sehen können TABLE-Anweisung:

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

Während der App fließen I Erstellen Sie eine Benutzerinstanz (nicht db) und legen Sie ihr ein Firmenobjekt fest.

Dann rufe ich:

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

aber meine Anwendung fehlschlägt, dass die Gesellschaft die Angabe darf nicht null sein. Wenn ich die UserDao generierte Klasse öffne, sehe ich, dass bindValues ​​niemals ein Unternehmen vor dem Speichern des Benutzers erstellt.

@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); 
     } 
    } 

Was muss ich tun, um die untergeordneten Entitäten zu erstellen?

EDIT

OK Ich habe gerade gelesen, dass Beziehungen nicht automatisch von ORM verwaltet werden. Ich sehe nicht viele Vorteile bei der Verwendung der lib hehe ..

Antwort

0

OK Ich habe gerade gelesen, dass Beziehungen nicht automatisch von ORM verwaltet werden.

Also sollte ich die Firma vor einfügen.

Verwandte Themen