我正在使用 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();
}
}