Spring数据JPA中@modify方法的返回值是什么意思 @存储库 公共接口LoginDao扩展了JpaRepository{/},LoginDaoCustom{ LoginEntity findByLogin(字符串登录); @修改 int changePassword(字符串密码、字符串登录); }

Spring数据JPA中@modify方法的返回值是什么意思 @存储库 公共接口LoginDao扩展了JpaRepository{/},LoginDaoCustom{ LoginEntity findByLogin(字符串登录); @修改 int changePassword(字符串密码、字符串登录); },spring,spring-data,spring-data-jpa,Spring,Spring Data,Spring Data Jpa,如果我将changePassword的返回值更改为int以外的任何值,则会出现以下错误 @Repository public interface LoginDao extends JpaRepository<LoginEntity, Integer> { //}, LoginDaoCustom { LoginEntity findByLogin(String login); @Modifying int changePassword(String passw

如果我将changePassword的返回值更改为int以外的任何值,则会出现以下错误

@Repository
public interface LoginDao extends JpaRepository<LoginEntity, Integer> { //}, LoginDaoCustom {
    LoginEntity findByLogin(String login);

    @Modifying
    int changePassword(String password, String login);
}
原因:java.lang.IllegalArgumentException:修改查询只能使用void或int/Integer作为返回类型!
位于org.springframework.util.Assert.isTrue(Assert.java:65)
位于org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.(JpaQueryExecution.java:166)
位于org.springframework.data.jpa.repository.query.AbstractJpaQuery.getExecution(AbstractJpaQuery.java:106)
位于org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:86)
位于org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:337)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:172)
位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:260)
位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:172)
位于org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
... 46多
这个整数返回值是什么意思?我肯定spring在某处有文档记录,但我找不到它。它未在列表中列出


我应该补充一点,如果您将返回类型声明为int,则更新会自动失败,并且不会更新值。

int/Integer返回值是数据库中更新的行数。

有人可以详细说明反对票吗?泰,这是基本的JDBC吗?您能给我指一些文档吗?是的,这是JDBC行为。查看此文档,尝试SpringDataJPA代码,您将看到相同的行为。如果一切顺利,您需要在方法上使用@Query才能使其工作!哦,我在实体中有
@NamedQuery
。方法返回1,但由于某种原因,
findAll
返回的记录没有反映更改。我本以为会有错误。也许你应该试试@modify的一些选项
Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type!
    at org.springframework.util.Assert.isTrue(Assert.java:65)
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.<init>(JpaQueryExecution.java:166)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.getExecution(AbstractJpaQuery.java:106)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:86)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:337)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
    ... 46 more