Sugar ORM for Android cant find my column name
Asked Answered
S

3

8

Well I'm trying to select all entities where entitie_id = *some id*

I do this with this rule:

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

I know I should get some results back and I get an error. this error:

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

I know the column exists because I can set it in a different part of code.

Where am I going wrong?

Selfexpression answered 15/4, 2015 at 10:9 Comment(1)
What is the Java name of the field you're trying to query by?Microsporangium
G
35

You should be able to query with "entitieid".

Sugar ORM does some conversion when it creates the columns in the tables. Here is a basic example:

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

The documentation only specifies the conversion from camel case to underscore separation. I had to figure the other one out.

Greggrega answered 12/5, 2015 at 13:28 Comment(3)
I just ask myself.. WHY?!Ossified
Great finding TylerTersina
This is still helpful. But idk why they implemented such conversion.. Thanks!!Brisco
G
11

You can use NamingHelper.toSQLNameDefault() to wrap column names when building queries. Try:

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

NamingHelper is used in the Sugar ORM library to create tables and column names:

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

Genethlialogy answered 4/5, 2016 at 19:49 Comment(0)
S
0

SugarORM currently uses toSQLName() method of the StringUtil class to generate names for columns For example in your case:

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

The other and neat way to do it would be to use the Select class:

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

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

Scrutiny answered 9/2, 2020 at 21:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.