代码之家  ›  专栏  ›  技术社区  ›  Zun Juliano Moraes

按别名排序的Android房间

  •  1
  • Zun Juliano Moraes  · 技术社区  · 8 年前

    我想根据我创建的自定义别名来订购数据集。我试过了,但结果是语法错误。我做错什么了?

    代码:

    @Query("SELECT a/b as ratio " +
            "FROM dataset " +
            "where my_status = :myStatus " +
            "order by ratio ASC")
    

    它找不到按部分顺序排列的比率。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Anatolii    8 年前

    问题是 Room 生成 SQL 编译时基于实体的查询。因此,只有实体中指定的列名才能被 房间 是的。

    例如,如果您有一个实体 Employee 以下内容:

    @Entity(tableName = "employee_table")
    public class Employee {
        private String firstName;
        private String lastName;
        private double monthlySalary;
    }
    

    你想计算年或日工资或其他,然后你可以在 雇员 ( private double mathResult )然后将其用作别名:

    @Dao
    public interface EmployeeDao {
        @Query("select firstName, lastName, monthlySalary, monthlySalary*12 as mathResult from user_table order by mathResult asc")
        LiveData<List<Employee>> getUsers();    
    }