繁体   English   中英

Spring 数据 JPA 删除查询

[英]Spring data JPA delete query

我想看看这是否是使用 spring JPA 编写删除查询的正确方法。 我有一张表,主键为id ,外键为study_id 我想根据study_id删除一行。 我不能只在 JPA 中使用delete方法,因为study_id不是唯一键。 所以我写了新方法:

    @Modifying
    @Transactional
    @Query(value = "DELETE FROM MY_TABLE WHERE STUDY_ID = :studyId", nativeQuery = true)
    int deleteByStudyId(@Param("studyId") long studyId);

我从https://javadeveloperzone.com/spring-boot/spring-data-jpa-delete-query/#3_Delete_Operation_using_Custom_Query找到了这个。 但是,我不确定为什么需要 @Transactional 和nativeQuery才能正确处理它。 没有它们,我会得到错误。 我也想知道这是否是从表中删除的正确方法。 这可行,但我对 spring JPA 很陌生。

我不确定为什么需要 @Transactional 和 nativeQuery 才能正确处理它。

没有 nativeQuery 意味着您使用的是 JPQL,那么您应该在 Entity 中使用实体名称和列名称而不是数据库表名称或列

我也想知道这是否是从表中删除的正确方法。

我认为更简单的方法是使用 JPA 方法命名查询这种方式

Long deleteByStudyId(long studyId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM