使用 entityManager 仅更新选定的字段
Update only selected Fields using entityManager
当运行下面的代码仅更新选定的字段时,其他字段设置为空,
@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 启动,如何在不将其他字段设置为空的情况下更新我想要的字段。
谢谢
如果您使用本机查询执行更新,则不需要合并实体。下面的代码应该可以解决这个问题。
@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();
}
当运行下面的代码仅更新选定的字段时,其他字段设置为空,
@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 启动,如何在不将其他字段设置为空的情况下更新我想要的字段。 谢谢
如果您使用本机查询执行更新,则不需要合并实体。下面的代码应该可以解决这个问题。
@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();
}