0

我正在使用 ORMLite,并创建了一个从 ORMLite dao 框架扩展的自定义 DAO。在自定义 dao 中,我重写了 create 方法,并添加了一些逻辑。我查询实体列表,如果不存在则创建一个新实体,如果存在则返回现有实体的 id。查询工作正常,因为我正在运行时调试和检查列表对象。但是,只要列表大小为 0,它就会执行 if..else 的第一个块,然后执行第二个块,完全忽略 return 语句。如果列表不为空,它将按预期工作。

任何人都知道为什么这会表现得很时髦吗?我什至将覆盖方法名称更改为“persist”,以防它出于某种原因递归调用自身,但它不起作用。

@Override
public int create(DigitalAsset dAsset) throws SQLException {
        List<DigitalAsset> assets = this.queryForMatching(dAsset);

        if (assets.size() == 0) {
            return super.create(dAsset);
        }
        else {
            return assets.get(0).getId();
        }
    }
4

1 回答 1

0

我现在感觉很愚蠢,但经过进一步研究,我发现 ORMLite create 方法返回受影响的行数,而不是 id。事实证明,代码根本没有通过这两个块。已经很晚了,我当时可能还没有完全意识到。

于 2012-09-10T13:55:03.877 回答