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