Ebean查询;在WHERE子句中使用对象

时间:2014-04-22 13:27:18

标签: java sql ebean

我有一个StockItem类,其字段是Warehouse对象。我想运行一个Ebean查询来查找某个仓库的所有StockItem:

List<StockItem> result = StockItem.find()
                                  .where()
                                  .eq("warehouse", warehouse)
                                  .findList();

但是,即使数据库中存在具有给定仓库的StockItem,结果也始终为0。我在Warehouse类中重写了equals()。

如果我查询所有StockItems的列表,然后测试仓库字段的相等性,我可以找到我正在寻找的仓库:

String resultString;
List<StockItem> result = StockItem.find().findList();
if(result.get(0).warehouse.equals(warehouse)) {
        resultString = "success";
}

这是唯一的方法吗?

编辑:这是我在仓库中的等号()

@Override
public boolean equals(Object o) {
    if(o instanceof Warehouse) {
        Warehouse other = (Warehouse)o;
        return name.equals(other.name) && address.equals(other.address);
    } else {
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道ebean是什么,但你能尝试这样的事吗?

List<StockItem> result = StockItem.find()
                                  .where()
                                  .eq("warehouse.id", warehouse.getId())
                                  .findList();