使用entityManager仅更新选定的字段

时间:2018-06-19 03:48:35

标签: java hibernate spring-boot java-ee 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 boot,如何在不将其他字段设置为null的情况下更新我想要的字段。 谢谢

1 个答案:

答案 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();
    }