Hibernate UnsatisfiedDependencyException:Repository JPQL查询异常排查
解决org.springframework.beans.factory.UnsatisfiedDependencyException:Friendship Repository方法错误
问题根源
你的findFriendIdsByUserId方法中JPQL语句存在语法错误:JPQL是基于实体类属性编写的查询语言,而非直接使用数据库表的列名。你错误地使用了数据库列名user_id、friend_id,但实体类Friendship中对应的是user和friend(均为User类型的关联属性),无法直接通过f.user_id或f.friend_id访问。
修正方案
方案1:修正JPQL语句
将JPQL中的数据库列名替换为实体属性的访问路径,通过f.user.id获取用户ID,f.friend.id获取好友ID:
@Repository public interface FriendshipRepository extends JpaRepository<Friendship, Long> { @Query("SELECT f.friend.id FROM Friendship f WHERE f.user.id = :userId") List<Long> findFriendIdsByUserId(@Param("userId") Long userId); }
方案2:使用Spring Data JPA方法命名规则(无需手动写@Query)
利用Spring Data JPA的方法命名自动生成查询,更简洁:
@Repository public interface FriendshipRepository extends JpaRepository<Friendship, Long> { List<Long> findFriendIdByUser_Id(Long userId); }
额外注意事项
确保以下两点:
Friendship实体类中存在getUser()、getFriend()方法(你已标注省略getter,需确认实际存在)User实体类中存在getId()方法,否则JPQL无法访问关联实体的ID属性
内容的提问来源于stack exchange,提问作者Subham Surmara
相关产品推荐
相关产品推荐

