【发布时间】:2017-11-03 22:55:13
【问题描述】:
我正在尝试使用新的 Android Persistence Room Library 在两个数据库表之间创建关系。我查看了文档并尝试实现在https://developer.android.com/reference/android/arch/persistence/room/Relation.html 找到的示例:
@Entity
public class User {
@PrimaryKey
int id;
}
@Entity
public class Pet {
@PrimaryKey
int id;
int userId;
String name;
}
@Dao
public interface UserDao {
@Query("SELECT * from User")
public List<User> loadUser();
}
@Dao
public interface PetDao {
@Query("SELECT * from Pet")
public List<Pet> loadUserAndPets();
}
public class UserAllPets {
@Embedded
public User user;
@Relation(parentColumn = "user.id", entityColumn = "userId", entity = Pet.class)
public List pets;
}
@Dao
public interface UserPetDao {
@Query("SELECT * from User")
public List<UserAllPets> loadUserAndPets();
}
我收到以下错误
...error: Cannot figure out how to read this field from a cursor.
关于:
private java.util.List<?> pets;
我想指出,我发现他们文档中的某些内容确实令人困惑。例如缺少@PrimaryKey 以及User 类缺少@Entity 注释的事实,尽管它应该是一个实体(据我所知)。有人遇到同样的问题吗?提前非常感谢
【问题讨论】:
-
private java.util.List<?> ingredients;出现在图片中。您的代码粘贴正确了吗? -
@Moinkhan 它应该是“宠物”对不起。成分来自另一个例子,我正在做同样的事情并得到同样的错误......
-
你试过public List
;并且没有在关系行中定义 entity = Pet.class?
标签: android sqlite android-room android-architecture-components