8

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

我用这个规则做到这一点:

List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, "entitie_id = ? ", String.valueOf(nodeid));

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

E/SQLiteLog﹕ (1) no such column: entitie_id

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

我哪里错了?

4

3 回答 3

35

您应该能够使用“entitieid”进行查询。

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

String firstName; //creates column first_name
int entitie_id;   //creates column entitieid

该文档仅指定了从驼峰式大小写到下划线分隔的转换。我必须弄清楚另一个。

于 2015-05-12T13:28:57.790 回答
11

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

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

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

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

于 2016-05-04T19:49:00.420 回答
0

SugarORM 当前使用该类的toSQLName()方法StringUtil为列生成名称例如在您的情况下:

List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, StringUtil.toSQLName("entitie_id")+" = ? ", String.valueOf(nodeid));

另一种巧妙的方法是使用 Select 类:

List<NodeSugar> nodesugars = Select.from(NodeSugar.class).where(Condition.prop(StringUtil.toSQLName("entitie_id")).eq(nodeid)).list();

https://satyan.github.io/sugar/query.html

于 2020-02-09T21:51:00.280 回答