Jér*_*ôme 10 java database sqlite android android-room
我开始使用Android Room,我遇到了一些麻烦.
我有一个7 Orders的ArrayList,当我调用insertAll(List orders)时,只有4个订单被插入到数据库中.
如何调试插入查询以查找阻塞内容?
谢谢
joa*_*o86 17
Room执行的调用不是同步的,因此可能在您执行时
List<Order> myOrders = mDb.getOrderDao().getAll()
Run Code Online (Sandbox Code Playgroud)
它仍在插入订单.
试试这个
@Dao
public interface OrderDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public long insertOrder(Order order);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAllOrders(List<Order> order);
@Query("SELECT * FROM orders")
List<Order> getAll();
}
@Entity(tableName = TABLE_NAME)
public class Order {
public static final String TABLE_NAME = "orders";
@PrimaryKey (autoGenerate = true)
private int id;
@SerializedName("order_number")
@ColumnInfo(name = "order_number")
private String orderNumber;
}
// Call
mDb.getOrderDao().insertAllOrders(orders);
Log.d(TAG, "inserted all");
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() {
@Override
public void run() {
List<Order> myOrders = mDb.getOrderDao().getAll();
Log.d(TAG, "Orders nr = " + myOrders.size());
}
});
Run Code Online (Sandbox Code Playgroud)
必须添加 OnConflict 属性。
@Insert(onConflict = OnConflictStrategy.REPLACE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9698 次 |
| 最近记录: |