2

EntityAとEntityBの2つのエンティティがあります。EntityBには、EntityAの外部フィールドがあります。

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

ここで、EntityAがnullであるEntityBのすべてのエントリを照会します。だから私は次のクエリを行いました:

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

クエリを実行すると、空の結果セットが返されます。

実行するqueryAll()と、EntityBのエントリには、すべての値がnull/0に設定されたOrder-Objectが常に関連付けられていることがわかります。

クエリを実行するにはどうすればよいですか?

4

1 に答える 1

1

@ Toni4780かどうかわかりません。次のテストケースはうまくいきます。あなたが間違っていることは何もわかりません。

のテーブルではEntityBORMLiteは実際にのidを格納しているEntityAので、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 に答える