我的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%正常(所有其他具有相似代码的实体/表都没有问题)。
但其中有几个正在犯这样的错误。知道为什么吗?
答案 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>