引用的外键具有错误的列号。应该是2

问题描述:

这里是我的代码引用的外键具有错误的列号。应该是2

VirsualPerson

public class VirsualPerson extends Person{ 

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@PrimaryKeyJoinColumn(name="VIRSUALPERSON_ID") 
private long virsualPersonId; 

@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL) 
@JoinTable(name="Anime_character",catalog="anime",joinColumns={ 
     @JoinColumn(name="VIRSUALPERSON_ID",nullable=false)},inverseJoinColumns={@JoinColumn(name="ANIME_ID",nullable=false)}) 
private Set<Anime>animeCharacters=new HashSet<Anime>(); 


@OneToMany(fetch=FetchType.LAZY,mappedBy="charecter") 
private Set<VirsualPeopleComment>comments=new HashSet<VirsualPeopleComment>(); 

public long getVirsualPersonId() { 
    return virsualPersonId; 
} 
public void setVirsualPersonId(long virsualPersonId) { 
    this.virsualPersonId = virsualPersonId; 
} 
public Set<Anime> getAnimeCharacters() { 
    return animeCharacters; 
} 
public void setAnimeCharacters(Set<Anime> animeCharacters) { 
    this.animeCharacters = animeCharacters; 
} 
public Set<VirsualPeopleComment> getComments() { 
    return comments; 
} 
public void setComments(Set<VirsualPeopleComment> comments) { 
    this.comments = comments; 
} 

}

VirsualPersonComment

@Entity 
@Table(name="people_comment") 
public class VirsualPeopleComment { 
@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name="peopleCommentId") 
private long commentId; 

@Column(name="content") 
private String commentContent; 

@Temporal(TemporalType.TIMESTAMP) 
@Column(name="POST_TIME") 
private Date postTime; 


@ManyToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="USER_ID") 
private User commentUser; 

@ManyToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="VIRSUALPERSON_ID") 
private VirsualPerson charecter; 

public long getCommentId() { 
    return commentId; 
} 
public void setCommentId(long commentId) { 
    this.commentId = commentId; 
} 
public String getCommentContent() { 
    return commentContent; 
} 
public void setCommentContent(String commentContent) { 
    this.commentContent = commentContent; 
} 

public Date getPostTime() { 
    return postTime; 
} 
public void setPostTime(Date postTime) { 
    this.postTime = postTime; 
} 

public User getCommentUser() { 
    return commentUser; 
} 
public void setCommentUser(User commentUser) { 
    this.commentUser = commentUser; 
} 
public VirsualPerson getCharecter() { 
    return charecter; 
} 
public void setCharecter(VirsualPerson charecter) { 
    this.charecter = charecter; 
} 

}

这里是错误

引用来自VirsualPeopleComment的VirsualPerson的外键具有错误的列数。应该是2 我想知道有什么错我的注释,并非常感谢

我想你应该在这里指定@JoinColumn还有:

@OneToMany(fetch=FetchType.LAZY,mappedBy="charecter") 
private Set<VirsualPeopleComment>comments=new HashSet<VirsualPeopleComment>(); 

看起来应该是

@OneToMany(fetch=FetchType.LAZY,mappedBy="charecter") 
@JoinColumn(name="peopleCommentId") 
private Set<VirsualPeopleComment>comments=new HashSet<VirsualPeopleComment>(); 
+0

是的。可以在两个地方使用连接列,也可以从'VirsualPersonComment'类中删除'@JoinColumn(name =“VIRSUALPERSON_ID”)'并尝试。 –