这个JPA错误是什么以及如何解决?

时间:2011-12-09 20:20:06

标签: jpa

我的TableX引用了TableY。

@JoinColumn(name = "idTableY", referencedColumnName = "idTableY")
@ManyToOne(optional = false, fetch=FetchType.LAZY)
private TableY idTableY; 

我收到此错误。

<openjpa-2.0.0-r422266:935683 fatal user error> org.apache.openjpa.persistence.ArgumentException 
"com.mycompany.entities.TableX.idTableY" has columns with targets, but OpenJPA does not support any joins on this mapping in this context.

表Y有以下代码:

 @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTableY")
    private Collection<TableX> tableXCollection;

这个生成的eclipse-link代码100%正常(所有其他具有相似代码的实体/表都没有问题)。

但其中有几个正在犯这样的错误。知道为什么吗?

3 个答案:

答案 0 :(得分:5)

我得到了这个确切的错误,但对我来说,修复是将TableY添加到persistence.xml中持久性单元的类列表中。 对我来说,TableY是一个全新的实体。 我在它上面使用了@JoinColumn,它运行正常。

答案 1 :(得分:4)

尝试删除不需要的@JoinColumn定义。将自动生成包含外键的连接列。实体不是一个表,这是两个不同的东西。实体是在db表上映射的类。

答案 2 :(得分:0)

您需要将该类添加到 persistence.xml 文件中。
示例:

<class> com.mycompany.entities.TableX</class>
<class> com.mycompany.entities.TableY</class>