我正在使用Avaje Ebean API从PostgreSQL DB获取CRUD数据。这是我的代码:
import com.avaje.ebean.Ebean;
import com.avaje.ebean.Query;
import com.avaje.ebean.SqlQuery;
import com.avaje.ebean.SqlUpdate;
...
class Example {
private void insertStockItem(PickingFieldProductItemDto dto, StockDao stockDao) {
try {
Ebean.beginTransaction();
List<PickingFieldProductItem> productList = dto.getItemList();
for(PickingFieldProductItem product : productList) {
StockDto stockDto = buildStockDto(product);
Stock stock = stockDao.getStockItem(stockDto.ID);
// stock.Quantity is always 500
if(stock != null) {
if(stock.getQuantity().compareTo(product.getOutcomingQuantity()) == 0)
stockDao.deleteStock(stockDto);
else {
int updateQuantity = stock.getQuantity() - product.getOutcomingQuantity();
// updateQuantity = 300 and I will update this value to stock table
int identity = stockDao.updateStock(stockDto.ID, updateQuantity);
}
}
}
Ebean.commitTransaction();
} catch (BusinessException e) {
Ebean.rollbackTransaction();
} finally {
Ebean.endTransaction();
}
}
}
我的问题是:
在第一个循环中,我得到了stock对象,看到Quantity属性的值是500,然后我用另一个值(300)更新它。 update语句成功运行,我检查了identity
var,它返回值为1。
但是在第二个循环中,我再次得到了股票对象,现在Quantity属性的值仍然是500.我的预期是300.假设productList
只有2个元素。
任何人都可以帮助我如何获得预期的价值?有可能吗?
感谢。