Android的ORM无法找到我的列名

Twi*_*ler 8 sqlite android sugarorm

好吧,我正在尝试选择所有实体 entitie_id = *some id*

我这样做有这个规则:

List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, "entitie_id = ? ", String.valueOf(nodeid));
Run Code Online (Sandbox Code Playgroud)

我知道我应该得到一些结果,我得到一个错误.这个错误:

E/SQLiteLog? (1) no such column: entitie_id
Run Code Online (Sandbox Code Playgroud)

我知道列存在,因为我可以在代码的不同部分设置它.

我哪里错了?

Tyl*_*ser 35

您应该能够使用"entitieid"进行查询.

Sugar ORM在表中创建列时会进行一些转换.这是一个基本的例子:

String firstName; //creates column first_name
int entitie_id;   //creates column entitieid
Run Code Online (Sandbox Code Playgroud)

该文档仅指定从驼峰案例到下划线分离的转换.我不得不想出另一个.

  • 我只是问自己..为什么?! (4认同)

jne*_*len 11

在构建查询时,可以使用NamingHelper.toSQLNameDefault()来包装列名.尝试:

List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, NamingHelper.toSQLNameDefault("entitie_id") + " = ? ", String.valueOf(nodeid));
Run Code Online (Sandbox Code Playgroud)

NamingHelper在Sugar ORM库中用于创建表和列名:

https://github.com/satyan/sugar/blob/master/library/src/main/java/com/orm/helper/NamingHelper.java