ORMLite: запрос пустого внешнего поля - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть две сущности: EntityA и EntityB. EntityB имеет внешнее поле EntityA:

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

Теперь я хочу запросить все записи EntityB, где EntityA равен нулю. Итак, я сделал следующий запрос:

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

Если я выполню запрос, я получу пустой набор результатов обратно.

Если я выполню queryAll(), я вижу, что записи EntityB всегда имеют связанный объект Order-Object со всеми значениями, равными null / 0.

Как мне выполнить мой запрос?

1 Ответ

1 голос
/ 08 сентября 2011

Я не уверен, @ Toni4780.Следующий контрольный пример работает для меня.Я не вижу ничего, что вы делаете неправильно.

В таблице для EntityB, ORMLite фактически хранится id из EntityA, поэтому ямне интересно, является ли оно нулевым или 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());
...