2

我有两个实体:EntityA 和 EntityB。EntityB 有一个 EntityA 的外部字段:

@DatabaseField(foreign=true, columnName=ENT_A_NAME)
private EntityA entityA;

现在我想查询 EntityA 为空的 EntityB 的所有条目。所以我做了以下查询:

bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).prepare();

如果我执行查询,我会得到一个空的结果集。

如果我执行queryAll(),我会看到 EntityB 的条目总是有一个关联的 Order-Object,所有值都设置为 null/0。

如何执行我的查询?

4

1 回答 1

1

我不确定@Toni4780。以下测试用例对我有用。我看不出你做错了什么。

在 for 的表中EntityBORMLite实际上存储了 的idEntityA所以我想知道它是 null 还是 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());
于 2011-09-08T16:45:02.120 回答