2011-12-09 118 views
3

我的TableX引用了TableY。這是什麼JPA錯誤,以及如何解決它?

@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; 

這個生成的蝕鏈路代碼是100%的正常(所有其他實體/擁有類似的代碼表沒有問題)。

但是其中有一些給出了這樣的錯誤。任何想法爲什麼?

+0

引用tableX的tableY的列名稱是什麼? –

+0

tableX集合 – SQC

+0

persistence.xml怎麼樣 – viktor

回答

4

嘗試刪除@JoinColumn的定義是不必要的。包含外鍵的連接列是自動生成的。實體不是一個表,它們是兩個不同的東西。實體被映射到數據庫表上。

+0

是的,我意識到實體不是一個表(對不起)。感謝您的加入提示 – SQC

+0

我沒有足夠的知名度來讚揚你 – SQC

5

我得到了這個確切的錯誤,但對我來說,修復是將TableY添加到我的persistence.xml中的持久單元中的類列表。 對我來說,TableY是一個全新的實體。 我使用它@JoinColumn,它工作正常。

+0

我剛剛發現這個答案有用,再次! = P –

相關問題