You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:51:12