4

我正在尝试在 Android 中使用库 DBFlow。我在之前和旧版本(2.2.1)中使用过它,它使用了 $Table.field。现在它似乎有另一种格式,我们通过“_Table”引用一个新类。

例子:

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

这些“_Table”类是在何时何地创建的?我如何访问它们?(即使我想使用旧版本,我新创建的工作室项目也不会创建 $ 文件。对此进行一些解释,或两者兼而有之,会很好)

4

5 回答 5

4

您需要为要生成的文件运行成功的构建。确保您的代码可以编译,因此删除对“_Table”类的所有引用并首先运行您的项目,然后您应该能够访问它们。

于 2016-06-15T03:30:38.883 回答
2

我最近遇到了如下奇怪的错误,说它找不到那些“$Table”类,但实际上它们已经被构建并在那里。

我对每个新的 java 文件都进行了注释和取消注释。最终我发现这是因为 DBFlow 的一个模型类中没有“@PrimaryKey”。

因此,您必须为您的 DBFlow 模型类定义血腥的“@PrimaryKey”(并且不要忘记扩展 BaseModel)。PS:DBFlow 版本 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
于 2016-09-06T08:03:34.390 回答
2

_Table 类及其与数据库通信的相应方法是在您构建项目时创建的。即使有这些错误,您也可以构建它,并且它们将在那一刻创建。

如果您仍然面临这个问题,请确保您在班级顶部添加 @Table 注释,否则将不会创建它们。

于 2016-09-08T16:28:29.760 回答
1

我遇到了同样的问题,但原因是没有注释

@Table(databaseName = AppDatabase.NAME)

在顶端

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

    public long getId() {
        return id;
    }
}

班级...

于 2017-08-25T04:19:44.567 回答
0

好的,所以我也面临着类似的问题-

就像其他人也指出的那样,需要构建应用程序来解决这个问题。但是_table首先删除所有引用并删除它们是一项漫长的任务。我按照以下步骤操作 -

  1. 尝试rebuild应用程序,它会失败
  2. 现在转到Problems标签Android Studio
  3. 尝试找出除此之外的任何问题_table- 修复该问题并重新构建 - 瞧!
于 2022-01-12T13:55:03.267 回答