我已经加载了以下查询,但是由于某种原因,我得到了:
对方法public abstract void的查询验证失败
这发生在我开始应用程序之前,如果我注解掉它,它就会工作得很好。
查询的其余部分工作正常
问题查询为:
@Transactional
@Modifying(clearAutomatically = true)
@Query("UPDATE user u SET u.name=:name WHERE u.internalId=:internalId")
public void markEntryAsRead(@Param("internalId") String internalId, @Param("name") String name);
只需要知道查询是否正确完成
2条答案
按热度按时间vmjh9lq91#
为什么您的
CrudRepository
定义为CrudRepository<UserModel, String>
?它应该是
CrudRepository<UserModel, Long>
,因为UserModel
实体的id
是Long
类型。此外,在您提供的查询中:
@Transactional @Modifying(clearAutomatically = true) @Query("UPDATE user u SET u.internalId=:internalId WHERE u.id=:id") void markEntryAsRead(@Param("id") String id, @Param("internalId") String internalId);
您将
id
参数作为String
传递,但在中应为int
,因为在实体中您有private int id;
与internalId
相同。"所以"
尝试将
CrudRepository
定义为CrudRepository<UserModel, Long>
,并且在查询中不使用User
,而使用UserModel
,例如:另一种解决方案
由于使用的是
CrudRepository
,因此只需调用:或者,如果不是按
id
选择:2skhul332#
userRepo为: