2011-10-23 63 views
11

每次我做一個JPA項目時,Eclipse報告我的項目中有錯誤,但我不明白它爲什麼這樣做。我添加圖像和下面的錯誤:Eclipse報告我的JPA項目錯誤

enter image description here

Description Resource Path Location Type Column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 14 JPA Problem

Description Resource Path Location Type Column "title" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 18 JPA Problem

Description Resource Path Location Type Primary key join column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 10 JPA Problem

enter image description here

+0

你能顯示你的'頁面'表的細節嗎? –

+0

是的,我還沒有實現時間戳,所以他們不在頁面實體中的原因。 – LuckyLuke

+0

所以我猜Eclipse是說你的實體沒有正確地反映數據庫的狀態? Eclipse如何知道你正在使用哪個數據庫?也許它沒有使用你顯示的數據庫'adesnqhp_javaee'? –

回答

26

我有同樣的問題,對我來說,解決辦法是刷新數據庫連接。

打開JPA視圖,找到數據源資源管理器。你打開數據庫連接,連接你的數據庫,點擊刷新。然後對文件進行一些更改並保存,我在標識字段中添加了一個@Column(name =「」)註釋。之後,錯誤消息消失了,我發佈了Column註釋。

問題似乎是eclipse在建立第一個連接後讀取數據庫表,之後連接關閉。所以如果你像我一樣,在你的數據庫第一次連接之後做了一些修改,比如將字段名從foo_id改爲id,eclipse不知道這個,並且出現這個錯誤。

+5

我只會注意到,您還可以使用Project Explorer強制執行手動JPA驗證(Juno Service Release 2)。右鍵單擊該項目,選擇「驗證」。這避免了必須對源文件進行不必要的更改,以強制進行驗證。 – mrjmh

+0

我從現有的數據庫表導入類,並得到「目錄X無法解析的表Y」。我剛剛刪除了由Eclipse生成的所有類的Java代碼中的目錄信息(它被設置爲導入實體的數據庫模式的名稱),問題消失了。 – Nick

0

你可以試試這個:

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name = "id", unique=true, nullable=false) 
private int id 
+0

類似標題:@Column(名稱=「標題」) –

0

嘗試做代碼協助@Column(名稱引號內=」 「)。或者打開JPA Details視圖並查看列名稱組合以查看列選項。 @Table(name =「page」)註釋沒有驗證錯誤,所以看起來Eclipse正在查找頁表。

0

註釋看起來是正確的,你確定你的項目類路徑是好的嗎?首先嚐試構建沒有ID和標題字段的實體。

1

您的項目中是否包含JPA/JPA2接口?如果你正在使用maven,你需要包含這些類的依賴關係。我假設他們是因爲進口申報中沒有出現紅線,但爲了安全起見,您應該驗證它們是否存在。

對於JPA2依賴,你可以使用:

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
+0

我只是重讀你的問題,並意識到,我的答案是不太可能涉及到的問題,但在這裏留下它作爲有用的信息給別人,因爲它不涉及到問題。 –

2

讀此,如果你想解決你的問題很容易

。在你的數據庫沒有問題。您只需從Eclipse創建一個新的連接到在將JPA功能添加到項目期間執行的同一個數據庫。

步驟: -
從您的mysql提示符創建一個新的數據庫。
右鍵單擊Eclipse/MyEclipse中的項目,然後轉到屬性。
單擊左側的Eclipse/MyEclipse選項卡,然後單擊JPA子菜單。
然後點擊創建新的連接。放置一個新的連接名稱。並添加相同的數據庫。 (你也可以選擇更改你的數據庫,但同樣的數據庫也可以)。
測試連接,然後單擊完成。
第一次它不會顯示新創建的連接名稱。只需點擊確定關閉該窗口。

然後,再次右鍵單擊項目,然後單擊Propeties。現在,您可以在該連接下拉列表中看到您新創建的連接。選中並單擊確定。

您的錯誤將消失。

此錯誤的可能原因: -
每次使用persistence.xml連接任何項目時,Eclipse都會與您建立連接,但僅限於第一次。
因此,之後的任何更改,特別是數據庫方面(表名等)的任何更改都會從Eclipse中引發錯誤。

謝謝。

4

舊的線程,但我只是有同樣的問題,並用更快的方法解決。

  1. 項目屬性 - > JPA
  2. 更改連接。點擊應用。
  3. 將連接更改爲以前的值。點擊應用。

希望這可以幫助別人。

2

我有同樣的問題。這是我如何解決它

  1. 刷新連接
    • 轉到Data Source Explorer中
    • 選擇連接,然後右鍵單擊
    • 選擇刷新
  2. 清潔工程
    • 前往項目菜單
    • 選擇清潔
0

在我的情況下,它是在屬性 - 只是舊的連接> JPA->添加連接。所以刷新不會有幫助。 的新連接將在不刷新時幫助正確的數據庫

2

轉到Data Source Explorer中,斷開數據庫連接,連接數據庫連接後,右鍵單擊您的項目,點擊確認。

我希望它能幫助你。