【问题标题】:How to update without using @Query in JPA?如何在 JPA 中不使用 @Query 进行更新?
【发布时间】:2022-01-02 15:14:09
【问题描述】:
@Repository
@Transactional
public interface CreditDataFileRepository extends JpaRepository<CreditDataFileEntity, String> {

    @Modifying
    @Query(value = "update passdb.creditdata_files set total_rec=?1, processed_rec=?2, rejected_rec=?3 where filename=?4",nativeQuery=true)
    void updateById(int totalRec, int processedRec, int rejectedRec, String filename);
}

我不想使用 @Query 注释,甚至不想使用 jpa save() 方法。 有没有其他方法可以更新。

【问题讨论】:

  • 改用jdbc
  • 您认为更新应该如何进行?
  • 我们不能使用一些自定义方法吗?我不知道该怎么做。
  • 如果您想拥有自己的更新代码但通过 JPA 存储库接口公开,您可能需要自定义接口实现
  • 是自定义接口实现。有办法吗?怎么样?

标签: java jpa spring-data-jpa


【解决方案1】:

使用 EntityManager 您可以创建和执行查询:

Query query = entityManager.createNativeQuery("select * from items where id = ?");
query.setParameter(1, id);

Object[] result = (Object[]) query.getSingleResult();

您也可以使用 Criteria API:

CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Item> query = builder.createQuery(Item.class);
Root<Item> root = query.from(Item.class);

query.select(root);
query.where(builder.equals(root.get("id"), id));

Item item = entityManager.createQuery(query).getSingleResult();

【讨论】:

    猜你喜欢
    • 2022-10-16
    • 2021-03-31
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多