【发布时间】:2021-01-12 13:59:14
【问题描述】:
我正在使用 Spring Data JPA 将记录保存到我的数据库中。 这是我正在使用的方法:
@Override
public void persistOrder(final Order order) {
orderRepository.save(order);
}
和我的存储库:
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
Optional<Order> findByOrderId(UUID orderId);
}
我想修改它以便保存或更新。这是我目前所拥有的:
@Override
public void saveOrUdpate(final Order order) {
orderRepository.save(order);
long id = orderRepository.findByOrderId(order.get()).getId();
orderRepository.deleteById(id);
orderRepository.save(order);
}
我有几个问题 -
#1 这是不好的做法(删除然后重新插入)吗?
#2 如果我使用休眠实现我的仓库,休眠的 saveOrUpdate(..) 会在引擎盖下做同样的事情吗?
#3 你知道我如何使用普通的 Spring Data Jpa 来实现这一点吗?
谢谢 :)
【问题讨论】:
-
1.肯定是的。
-
谢谢,我看到了,但是如何使用它来更新多个列?
-
@JohnnyAlpha 多列还是多行?列应该开箱即用。只需更改您的对象并保存它,所有列都应该更新。对于多行,JpaRepository 中应该有一个 saveAll 方法。
-
您可以通过 id 获取现有数据,然后将现有数据映射到新数据,然后保存。您可以使用 ModelMapper 来映射模型。
标签: java spring hibernate spring-data-jpa relational-database