Hibernate UnsatisfiedDependencyException:原因:方法公共抽象 java.util.List 的查询验证失败

问题描述 投票:0回答:1

我得到了

org.springframework.beans.factory.UnsatisfiedDependencyException

以下是我的Friendship实体类

// Friendship.java

package com.socialPulse.socialPulse.modal;

import jakarta.persistence.*;

@Entity
@Table(name = "friendship")
public class Friendship {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "user_id", nullable = false)
    private User user;

    @ManyToOne
    @JoinColumn(name = "friend_id", nullable = false)
    private User friend;

    @Column(name = "status")
    private String status;

    // Constructors, getters, and setters

    public Friendship() {
    }

    public Friendship(User user, User friend, String status) {
        this.user = user;
        this.friend = friend;
        this.status = status;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public User getFriend() {
        return friend;
    }

    public void setFriend(User friend) {
        this.friend = friend;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

以下是我的友谊库

@Query("SELECT f.friend_id FROM Friendship f WHERE f.user_id = :userId")
List<Long> findFriendIdsByUserId(@Param("userId") Long userId);

我遇到了

findFriendIdsByUserId
这个方法的异常。我不确定查询对我来说是否正确,它会从 userID 与我发送的参数匹配的表中获取friendIds。

我的友谊表架构看起来像

`CREATE TABLE IF NOT EXISTS friendship (`
`id BIGINT AUTO_INCREMENT PRIMARY KEY,`
`user_id BIGINT,`
`friend_id BIGINT,`
`status VARCHAR(255),`
`CONSTRAINT unique_user_friend UNIQUE (user_id, friend_id),`
`FOREIGN KEY (user_id) REFERENCES user_table(id),`
`FOREIGN KEY (friend_id) REFERENCES user_table(id)`
`);`

当我尝试在数据库中运行查询(

SELECT f.friend_id FROM friendship f WHERE f.user_id = 1
)时,我得到的输出为:

friend_id  
2
3
4

我的友谊表是什么样的

id      user_id     friend_id   status  
1      1              2        accepted
3      1              3        accepted
4      1              4        accepted

尝试调试并查看其他 stackoverflow 答案,但没有运气。期待有人帮忙。

java spring spring-boot hibernate jpa
1个回答
0
投票

看起来您在查询中混合了 JQL 和本机 SQL。

试试这个:

@Query("SELECT f.friend_id FROM friendship f WHERE f.user_id = :userId", nativeQuery = true)
© www.soinside.com 2019 - 2024. All rights reserved.