2016-05-14 15 views
3

Ich versuche, die Bibliothek DBFlow in Android zu verwenden. Ich habe es vorher benutzt und in der älteren Version (2.2.1) hat es ein $ Table.field verwendet. Jetzt scheint es ein anderes Format zu haben, in dem wir eine neue Klasse mit "_Table" referenzieren.Kann "* _Table" -Klassen für DBFlow in Android (Studio) nicht finden

Beispiel:

int taxBracketCount = SQLite.select(count(Employee_Table.name)) 
.from(Employee.class) 
.where(Employee_Table.salary.lessThan(150000)) 
.and(Employee_Table.salary.greaterThan(80000)) 
.count(); 

Wo und wann werden diese "_table" Klassen erstellt? Wie kann ich auf sie zugreifen? (Auch wenn ich eine ältere Version verwenden wollte, mein neu erstelltes Studio-Projekt erstellt die $ -Dateien auch nicht. Einige Erklärungen dazu oder beide wären nett)

Antwort

3

Sie müssen einen erfolgreichen Build für die Dateien, die generiert werden sollen. Stellen Sie sicher, dass der Code kompiliert werden kann. Entfernen Sie daher alle Verweise auf die Klassen "_Table", und führen Sie zuerst Ihr Projekt aus, und Sie sollten dann darauf zugreifen können.

1

Ich habe kürzlich komische Fehler wie unten, sagte, dass es diese "$ Table" -Klassen nicht finden konnte, aber tatsächlich waren sie gebaut und drin.

Ich kommentierte und unkommentierte jede neue Java-Dateien. Und schließlich fand ich das, weil es in einer Modellklasse von DBFlow kein "@PrimaryKey" gibt.

So haben Sie die blutigen „@PrimaryKey“ für Ihre DBFlow Modellklassen zu definieren (und vergessen Sie nicht zu erstreckt Basemodel als auch). PS: DBFlow Version 3.0.0-beta

/Users/XXX/code_projects/###/src/main/java/com/XXXXX.java:9: error: cannot find symbol 
import com.XXX.databasemodel.XXX$Table 
1

_table Klassen und ihre entsprechenden Methoden mit der Datenbank zu kommunizieren, werden erstellt, wenn Sie Ihr Projekt erstellen. Sie können es sogar mit diesen Fehlern erstellen, und sie werden in diesem Moment erstellt.

Wenn Sie immer noch mit dem Problem konfrontiert sind, stellen Sie sicher, dass Sie die Anmerkung @Table über Ihrer Klasse hinzufügen, andernfalls werden sie nicht erstellt.

0

Ich habe das gleiche Problem konfrontiert, aber der Grund war das Fehlen der Anmerkung

@Table(databaseName = AppDatabase.NAME) 

an der Spitze der

public class AwesomeModel extends BaseModel 
    @PrimaryKey(autoincrement = false) 
    @Column @Expose long id; 

    public long getId() { 
     return id; 
    } 
} 

Klasse ...