我有两个实体:EntityA和EntityB。 EntityB有一个EntityA的外部字段:
@DatabaseField(foreign=true, columnName=ENT_A_NAME)
private EntityA entityA;
现在我想查询EntityA为EntityA为null的所有条目。所以我做了以下查询:
bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).prepare();
如果我执行查询,我会得到一个空的结果集。
如果我执行queryAll()
,我发现EntityB的条目总是一个关联的Order-Object,所有值都设置为null / 0。
如何执行查询?
答案 0 :(得分:1)
我不确定@ Toni4780。以下测试用例适用于我。我没有看到你做错了什么。
在EntityB
的表格中,ORMLite实际上存储了EntityA
的 id ,所以我想知道它是否为空或0.你试过吗?以下?
bDao.queryBuilder().where().eq(EntityB.Ent_A_NAME, 0).prepare();
或两者:
bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).
or().eq(EntityB.Ent_A_NAME, 0).prepare();
这是我的单元测试代码:
Dao<Order, Integer> orderDao =
DaoManager.createDao(connectionSource, Order.class);
TableUtils.createTable(connectionSource, Order.class);
int numOrders = 10;
for (int orderC = 0; orderC < numOrders; orderC++) {
Order order = new Order();
order.val = orderC;
assertEquals(1, orderDao.create(order));
}
List<Order> results = orderDao.queryBuilder().where()
.isNull(Order.ACCOUNT_FIELD_NAME).query();
assertNotNull(results);
assertEquals(numOrders, results.size());