ORMLite:查询空的外来字段

发布于 2024-12-03 11:22:04 字数 447 浏览 1 评论 0原文

我有两个实体: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-Object,所有值都设置为 null/0。

我如何执行我的查询?

I have two entities: EntityA and EntityB. EntityB has a foreign field of EntityA:

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

Now I want to query all entries of EntityB where EntityA is null. So I've made the following query:

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

If I execute the query I get an empty result set back.

If I execute queryAll() I see that the entries of EntityB have always an associated Order-Object with all values set to null/0.

How can I execute my query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山色无中 2024-12-10 11:22:04

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

EntityB的表中,ORMLite实际上存储了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());

I'm not sure @Toni4780. The following test case works for me. I don't see anything that you are doing wrong.

In the table for EntityB, ORMLite actually stores the id of the EntityA so I am wondering if it is null or 0. Have you tried the following?

bDao.queryBuilder().where().eq(EntityB.Ent_A_NAME, 0).prepare();

or both:

bDao.queryBuilder().where().isNull(EntityB.Ent_A_NAME).
    or().eq(EntityB.Ent_A_NAME, 0).prepare();

Here's my unit test code that works:

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());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文