Ormlite: запрос пустого иностранного поля
Вопрос
У меня есть две сущности: 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 всегда имеют связанный порядок-объект со всеми значениями, установленными NULL/0.
Как я могу выполнить свой запрос?
Решение
Я не уверен @toni4780. Следующий тестовый пример работает для меня. Я не вижу ничего, что вы делаете не так.
В таблице для EntityB
, Ормлит на самом деле хранит я бы принадлежащий 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());