我试图选择entitie_id = *some id*
我按照这条规则执行此操作:
List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, "entitie_id = ? ", String.valueOf(nodeid));
我知道我应该得到一些结果,但我得到一个错误。 这个错误:
E/SQLiteLog﹕ (1) no such column: entitie_id
我知道列存在,因为我可以在代码的不同部分设置它。
我哪里错了?
答案 0 :(得分:35)
您应该可以使用“entitieid”进行查询。
Sugar ORM在表中创建列时会进行一些转换。这是一个基本的例子:
String firstName; //creates column first_name
int entitie_id; //creates column entitieid
该文档仅指定从驼峰案例到下划线分离的转换。我不得不想出另一个。
答案 1 :(得分:11)
您可以在构建查询时使用NamingHelper.toSQLNameDefault()来包装列名。尝试:
List<NodeSugar> nodesugars = NodeSugar.find(NodeSugar.class, NamingHelper.toSQLNameDefault("entitie_id") + " = ? ", String.valueOf(nodeid));
NamingHelper在Sugar ORM库中用于创建表和列名称:
https://github.com/satyan/sugar/blob/master/library/src/main/java/com/orm/helper/NamingHelper.java
答案 2 :(得分: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();