假设我有下一个实体
@Entity
@Table(name = "account")
public class Account {
@Id
private long id;
private long amount;
}
我想增加一些价值,以现有的一个,并更新它在数据库中,或者如果这个帐户是不存在的,我想创建一个新的。
Spring Data JPA的基本方法是:
var account = dataJpaRepository.findById(id);
if (account==null) {account = new Account(id,someValue}
else {account.set(account.getAmount() + someValue);}
dataJpaRepository.save(account);
在本例中,完成了对DB的两个请求,但是使用原生查询,我可以只发送一个请求来完成,如下所示:
"INSERT INTO account (id, amount) VALUES (:id, someValue) ON DUPLICATE KEY UPDATE
amount = account.amount + someValue"
是否可以通过SpringDataJPA/JPQL来完成同样的事情并减少请求量?
2条答案
按热度按时间uqxowvwt1#
当然不确定这是否可行,但你可以尝试两件事:
6qfn3psc2#
你可以这样做: