我刚刚在eclipse中启用了JPA验证,并向我显示了一些错误(代码实际运行正常)。
我有一个文章实体,它对下一篇文章和前一个实体(相同类型)有一个参考。验证者抱怨信息:
Column "nextArticle" cannot be resolved on table "article"
这究竟是什么意思? SQL表也有列。我还尝试使用“mappedBy”和“JoinColumn”注释将变量映射到彼此,但无法解决验证错误。
这是类和验证错误:
那是'映射:
编辑:尝试了anttix的建议:表格中的列名为“nextArticle_id”和“prevArticle_id”,因此我提出了该代码:
@OneToOne(mappedBy = "prevArticle")
@JoinColumn(name = "nextArticle_id")
public Article getNextArticle() {
return nextArticle;
}
@OneToOne(mappedBy = "nextArticle")
@JoinColumn(name = "prevArticle_id")
public Article getPrevArticle() {
return prevArticle;
}
但验证者现在抱怨“mappedBy”注释带有消息:
In attribute 'prevArticle', the "mapped by" attribute 'nextArticle' has an invalid mapping type for this relationship.
编辑2:我找到了解决方案。我必须使用@Column注释告诉验证器实际数据库中列的名称,如下所示:
答案 0 :(得分:1)
Eclipse无法在表中找到名为prevArticle
的列。您应该为nextArticle指定列名,并与prevArticle创建双向关系,以指示它不需要自己的外键列。
@OneToOne
@JoinColumn(name = "next_id")
private Article nextArticle;
@OneToOne(mappedBy = "nextArticle")
private Article prevArticle;
如果需要,您可以省略@JoinColumn
nextArticle
,但我会保留它以明确哪个关系“拥有”外键列。
另见: