在Android Room中使用OrderBy CASE语句时,可能会遇到无法正常工作的问题。为了解决这个问题,可以尝试以下解决方法:
@Dao
public interface UserDao {
@Query("SELECT * FROM User ORDER BY CASE WHEN :sort = 'name' THEN name END")
List getUsersSortedByName(String sort);
}
public class UserSortMapping {
public String sortField;
public String name;
public UserSortMapping(String sortField, String name) {
this.sortField = sortField;
this.name = name;
}
}
然后,在查询方法中使用SortingMapping类来进行排序:
@Dao
public interface UserDao {
@Query("SELECT name AS name, name AS sortField FROM User ORDER BY :sortField")
List getUsersSortedByName(String sort);
}
这样,就可以根据传入的排序字段进行排序。
这些解决方法可以帮助您解决Android Room Dao中使用OrderBy CASE不起作用的问题。