【问题标题】:ORMLite: Query empty foreign fieldORMLite:查询空的外部字段
【发布时间】:2011-09-08 13:49:28
【问题描述】:

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

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

现在我想查询 EntityA 为空的 EntityB 的所有条目。所以我做了以下查询:

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

如果我执行查询,我会得到一个空的结果集。

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

如何执行我的查询?

【问题讨论】:

    标签: android ormlite


    【解决方案1】:

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

    EntityB 的表中,ORMLite 实际上存储了EntityAid,所以我想知道它是 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());
    

    【讨论】:

    • 好的。现在它使用 BOTH isNull() 和 eq().(..,0) 让它工作。奇怪的是,一些 (2) 项使用 isNull() 返回,而其他 (5) 项使用 eq() 返回。旁注:我真的很喜欢 ormlite。继续努力:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多