aka*_*tra 5 android android-sqlite android-room android-architecture-components
我在玩 Room,在那里我找不到解决问题的方法。
下面是数据。
桌子
CREATE TABLE `Employee` (
`id` INTEGER NOT NULL,
`first_name` TEXT,
`last_name` TEXT,
PRIMARY KEY(`id`)
);
Run Code Online (Sandbox Code Playgroud)
表格数据
实体
@Entity(tableName = "Employee")
public class Employee {
@PrimaryKey
private int id;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
..Getters & Setters..
}
Run Code Online (Sandbox Code Playgroud)
查询 1
@Query("Select * from Employee")
List<Employee> getEmployees();
Run Code Online (Sandbox Code Playgroud)
结果 成功
查询 2
@Query("Select first_name, last_name from Employee")
List<Employee> getEmployees();
Run Code Online (Sandbox Code Playgroud)
结果
错误:查询返回的列在 ***.Employee 中没有字段 [id],即使它们被注释为非空或原始。查询返回的列:[first_name, last_name]
如果我添加id到上面Query 2,它会起作用。
同样,如果我们Foreign Key在表中有 a并且我们尝试查询列的子集,它会抛出错误。当我们在查询中同时添加Primary Key&Foreign Key列时,错误就会发生。
问题 1 这
是否意味着我们必须始终
在 Query 中包含Primary Key& Foreign Key(如果存在)?
问题 2 在它引发此类错误的背后究竟发生了什么?还是我做错了什么?
房间版本 1.1.1
另外,引用了这个链接,但它没有解决我的主键问题。
kar*_*ran 10
要从多个字段中选择数据,请考虑以下示例。
从文档
只要结果列集可以映射到返回的对象中,Room 就允许您从查询中返回任何基于 Java 的对象。例如,您可以创建以下基于 Java 的普通对象 (POJO) 来获取用户的名字和姓氏:
public class NameTuple {
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在查询方法中使用此 POJO:
@Dao
public interface MyDao {
@Query("SELECT first_name, last_name FROM user")
public List<NameTuple> loadFullName();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4674 次 |
| 最近记录: |