Android ORMLite:查询空的外部字段

Android ORMLite:查询空的外部字段,android,ormlite,Android,Ormlite,我有两个实体:EntityA和EntityB。EntityB具有EntityA的外部字段: @DatabaseField(foreign=true, columnName=ENT_A_NAME) private EntityA entityA; 现在我想查询EntityB中EntityA为null的所有条目。因此,我提出了以下问题: bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).prepare(); 如果执行查询,则返回一个空结

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

@DatabaseField(foreign=true, columnName=ENT_A_NAME)
private EntityA entityA;
现在我想查询EntityB中EntityA为null的所有条目。因此,我提出了以下问题:

bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).prepare();
如果执行查询,则返回一个空结果集

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


如何执行查询?

我不确定@Toni4780。下面的测试用例适合我。我看不出你做错了什么

EntityB
的表中,实际上存储了
EntityA
的id,因此我想知道它是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());
Dao命令Dao=
创建DAO(connectionSource,Order.class);
createTable(connectionSource,Order.class);
int numOrders=10;
for(int-orderC=0;orderC
Ok。现在,它使用isNull()和eq()使其工作(..,0)。奇怪的是,一些(2)项使用isNull()返回,而其他(5)项使用eq()返回。旁注:我真的很喜欢奥姆利特。继续做好工作:)