当在代码下运行以仅更新所选字段时,其他字段将设置为空,
@Override
@Transactional
public void updateStocksPrices(Stocks stocks) {
Query query = entityManager.createNativeQuery("UPDATE stocks set price=price+(?) WHERE id=(?)", Stocks.class);
query.setParameter(1, stocks.getPrice());
query.setParameter(2, stocks.getId());
entityManager.merge(stocks);
entityManager.flush();
}
我正在使用spring boot,如何在不将其他字段设置为null的情况下更新我想要的字段。 谢谢
答案 0 :(得分:1)
如果使用本机查询执行更新,则无需合并实体。以下代码应该解决这个问题。
@Override
@Transactional
public void updateStocksPrices(Stocks stocks) {
Query query = entityManager.createNativeQuery("UPDATE stocks set price=:price WHERE id=:id");
query.setParameter("price", stocks.getPrice());
query.setParameter("id" stocks.getId());
query.executeUpdate();
}