【发布时间】:2018-02-05 23:16:25
【问题描述】:
我开始使用 Android Room,但遇到了一些问题。
我有 7 个订单的 ArrayList,当我调用 insertAll(List orders) 数据库中只插入了 4 个订单。
如何调试插入查询以找到阻塞的内容?
谢谢
【问题讨论】:
-
你的订单表有主键吗?如果是这样,当数据存在冲突时,您选择了哪个选项?
-
您好,感谢您的帮助。我确实有一个主键,我选择了 OnConflictStrategy.REPLACE 所以它正在执行 7 次插入,但是当我插入所有订单时,getAll() 方法只返回其中的 4 个......
-
这很奇怪......它必须是一个简单的查询,比如“SELECT * FROM orders”,你能把你的 DAO 和你的实体/pojo 放在问题中吗?
-
@Dao public interface OrderDao { @Insert(onConflict = OnConflictStrategy.REPLACE) public long insertOrder(Order order); @Query("SELECT * FROM orders") List
getAll(); } -
@Entity(tableName = TABLE_NAME) public class Order { public static final String TABLE_NAME = "orders"; @PrimaryKey 私有 int id; @SerializedName("order_number") @ColumnInfo(name = "order_number") private String orderNumber; } // 调用 (int i = 0; i myOrders = mDb.getOrderDao().getAll();
标签: java android database sqlite android-room