java - Spring数据JPA删除查询
问题描述
我想看看这是否是使用 spring JPA 编写删除查询的正确方法。我有一张表,主键为id
,外键为study_id
。我想删除基于study_id
. 我不能只delete
在 JPA 中使用方法,因为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找到了这个。但是,我不确定为什么 @TransactionalnativeQuery
是正确处理它所必需的。没有它们,我会得到错误。我也想知道这是否是从表中删除的正确方法。这可行,但我对 Spring JPA 很陌生。
解决方案
我不确定为什么需要 @Transactional 和 nativeQuery 才能正确处理它。
没有 nativeQuery 意味着您使用的是 JPQL,那么您应该在 Entity 中使用实体名称和列名称而不是数据库表名称或列
我也想知道这是否是从表中删除的正确方法。
我认为更简单的方法是以这种方式使用 JPA 方法命名查询
Long deleteByStudyId(long studyId);
推荐阅读
- python - 即使在 BASE_DIR 与 settings.py 中的模板连接后,如何修复 TemplatesDoesNotExist 错误?
- regex - 用正则表达式替换自定义匹配模式并替换匹配的专利并在vscode中给出内部字符串
- reactjs - 使用反应原生 firebase getInitialNotification 方法反应导航 5.x
- javascript - 如何获得元素的右侧位置?
- mysql - 选择和插入查询的 MySQL 变量语法
- azure - 将“使用 Apple 登录”与 Azure AD B2C 集成时,我们可以跳过电子邮件屏幕吗?
- google-sheets-importxml - 使用 IMPORTXML 时,为什么我可以得到 IMG ALT 而不是 IMG SRC?
- r - Pivot_longer() 在 dplyr 中的多组列上
- reactjs - 来自 api 的图像在反应中无法渲染
- javascript - 鼠标单击图像时更改元素