JPA ManytoMany关系中出现“JoinColumn cannot be resolved to a type”错误。

11

我正在使用Spring Boot并尝试在用户(User)和技能(Skill)之间实现多对多关系。我有一个名为users_skills的表,包含user_id和skill_id列。当我尝试实现这个关系时,在STS中的@JoinColumn注释中不断收到“JoinColumn无法解析为类型”错误。以下是我的User类:

   @Entity
   @Table(name = "users")
   public class User {


@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String email;
private String firstName;
private String lastName;
private List<Skill> skills = new ArrayList<Skill>();



protected User() {}

public User(String email,String firstName, String lastName) {
    this.email = email;
    this.firstName = firstName;
    this.lastName = lastName;
}    


public Long getId() {
    return this.id;
}

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

public String getEmail() {
    return this.email;
}

public void setEmail(String email) {
    this.email = email ;
}


public String getFirstName() {
    return this.firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName ;
}

public String getLastName() {
    return this.lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName ;
}

@ManyToMany
@JoinTable(name="users_skills", 
            joinColumns={@JoinColumn(name="user_id")},              
          inverseJoinColumns={@JoinColumn(name="skill_id")})    
public List<Skill> getSkills(){
    return skills;
}

public void setSkills(List<Skill> skills) {
    this.skills = skills ;
}

}

你的 users_skills 表中,user_idskill_id 真的是列名吗? - Patrick
是的,它们是正确的。这不是正确的方式吗? - geoandri
2
在你的代码片段中,你没有展示导入语句。你的错误似乎是IDE编译问题。可能只是忘记了 import javax.persistence.JoinColumn 语句这么简单吗? - yntelectual
谢谢,我太蠢了。IDE的信息有误导性,因为它没有提出导入的建议。请将其作为答案添加以接受它。 - geoandri
请查看此处:https://dev59.com/Tmsz5IYBdhLWcg3wfn0x - Rdurand
2个回答

46

只需将此代码写在您的类的头部即可

import javax.persistence.JoinColumn;

有时候,Eclipse在上下文菜单中没有显示导入链接,但它确实存在。希望这能帮助到某些人。


0
我最后导入了下面这行代码:
import jakarta.persistence.JoinColumn;

以下是关于这个问题的情况。
@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)   
    @JoinTable(name = "user_role", joinColumns = {
            @JoinColumn(name = "user", referencedColumnName = "id")},
            inverseJoinColumns = { @JoinColumn(name = "role", referencedColumnName = "id")})
        
private Set<Role> roles = new HashSet<>();

我正在使用MySQL Workbench。希望这对某人有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接