2012-05-24 84 views
3

我在eclipse中創建了一個工作項目,它創建了一個從實體到mysql數據庫的JPA表(仍在學習)。不幸的是,由於我想在那裏做'測試'和'生產'數據庫,所以它在錯誤的數據庫中創建了表。不知何故,它獲得了「生產」數據庫的詳細信息,即使它看起來像選擇的數據庫連接用於測試。 我篡改了一下這個項目,並使它與某個(測試)的正確連接對象連接。我可以在eclipse(都是dbs)中ping數據庫,並在Data Source Explorer中查看數據庫。 但是現在我無法通過右鍵單擊它並選擇'JPA'工具'>'從實體生成表格'來創建項目表。 創建開始和完成沒有錯誤,就像一切正常,但我沒有看到任何數據庫中的表。 (在eclipse數據庫瀏覽器或從命令行)。 persistence.xml應該沒問題,因爲它之前已經創建了一個表。無法在eclipse中創建jpa表

唯一的錯誤是實體類,因爲它說實體註釋「表xxx無法解析」。正如我所看到的,它來自未創建的表格。

這是persistence.xml以防萬一。 http://pastebin.com/djPZei90

該項目也是一個Maven項目,它使用SVN。日食/項目的maven成功加載了依賴項,SVN沒有任何複雜性。

由於Maven的存在,有2個persistence.xml文件(只有登錄憑證和數據庫名稱發生變化)用於生產和測試。可能是db連接在第一個地方被檢查並從錯誤的文件加載。 (只是猜測)

另外我試圖在生成表格時創建script.sql。我找到了這個文件,但它完全是空的。

無論如何,現在的問題是我無法在任何地方創建表格。 我完全被這個困惑了。任何提示,我應該看看解決這個問題?

+0

太多純文本。沒有閱讀。 – JMelnik

+1

它可能不相關,但persistence.xml顯示eclipseLink提供程序DDL gen屬性,但將Hibernate指定爲jpa提供程序。如果要使用運行時DDL生成,則需要將提供者切換到org.eclipse.persistence.jpa.PersistenceProvider或指定Hibernate設置。只是一個評論,因爲我不知道達利實際上使用這個來創建表 – Chris

+0

試過兩個提供商。不用找了。 –

回答

2

克里斯說得對,即使在一讀時我沒有正確理解答案。 我嘗試過與其他提供程序,但我可能已經錯誤地修改了錯誤的文件(2'persistence.xml'文件,因爲它是一個maven項目),或者可能有其他原因我沒有發現。 我之前得到了一個提示,我應該使用給定的提供者(在persitence.xml中)。因爲我沒有太在意它。由於使用的EclipseLink,提供者必須是確實:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

再次感謝克里斯,甚至認爲我未能在第一次嘗試,不得不花幾個小時解決這個。

+0

我後來注意到答案是Chris,而不是JMelnik。 JMelnik是一個屁股,因爲錯誤的信用,所以對Chris很抱歉。 –

0

花費一整天的時間。

我在Eclipse(Indigo btw)中創建了一個全新的(JPA)項目。 也爲此創建了一個新的數據庫(mysql)。

在Eclipse中爲此建立了連接。文件>新建>其他...>連接配置文件。

創建了一個新的包結構並讓Eclipse創建'persistence.xml'(src/META-INF/persistence.xml)。

我用eclipse嚮導創建了一個'JPA Entity'類。 (添加'id'(PK)和'content'字段) 將我之前的項目中的'pom.xml'複製到新的項目中(只做了像項目名稱這樣的小改動)。

還從前一個項目(src/main/java/META-INF /,包括no'test')複製'persistence.xml'文件。從持久性文件更改數據庫詳細信息和登錄憑證。

eclipse中的項目'Maven項目'(右鍵點擊項目名稱>配置) 因爲它現在是一個Maven項目,默認的'persistence.xml'可以被刪除,因爲它在錯誤的地方。 (Mavenizing該項目刪除了來自不存在罐子的所有錯誤。xml)

試圖再次爲項目創建表(同樣的錯誤,但是等待...)。

右鍵點擊項目>的Maven>禁用Maven的自然

然後再由它的Maven項目中,右鍵點擊項目>配置> ...

再次嘗試創建表,它創造了他們。一切正常!

去圖!

似乎一切都好,就像我懷疑的一樣。似乎有一些與Maven(插件)+日食的錯誤。

在前面的項目中做同樣的技巧將無濟於事。我甚至用嚮導創建了實體類(刪除了現有的)。 <類>聲明被添加到'persistence.xml',但它仍然不會執行該表。 (也嘗試刪除並重新添加maven性質)

我可能會錯過某個過程/做了不同的事情或者做錯了整個過程。但考慮到我得到其他項目的工作,而其他項目沒有,使用相同的技巧,似乎有一個很大的討厭的錯誤。

+0

這裏不添加實體文件的鏈接,因爲沒有什麼特定的東西與周圍的教程找到的文件相比。 pom。xml可能是特定於環境的,但它也是從其他帖子複製的。根據我發現的提示,我對自己做了一些更改。在這裏發佈,告訴某人需要某種maven + jpa pom。 http://pastebin.com/5abmc2D2 –

+0

不要說這是你能想象的最好的jpa + maven pom,所以通過一切手段做一個更好的。我也是Maven noob。 :)至少這是可行的,不需要你在settings.xml中調整,將文件安裝到本地存儲庫或其他類似的東西。 –

+0

另外,pom.xml中的版本應該是相當新的,因爲我從它們的原始源中檢查了它們(大部分)。日期將是2012年5月25日。 –

1

你能解決這個問題嗎?不幸的是,我偶然發現了同樣罕見的問題,這完全沒有意義。 JPA Tools不會因爲任何原因添加映射類,儘管它將它們寫入persistence.xml。

上週一切都完美無缺,但現在一切都是f * *。我甚至在不同的工作區創建了一個新的獨立項目,但它發生了同樣的錯誤。顯然這是一個日食/插件錯誤,否則我無法解釋它。使用eclipse 4.2.0。我不高興。

編輯:刪除Dali工具後,JPA配置器,Seam 3插件創建實體似乎再次工作。不知道爲什麼,很可能是衝突,但它仍不能解釋爲什麼它現在發生,而不是1個月前。從那時起,我並沒有改變我的eclipse安裝...

+0

很快:我的問題是我在maven pom.xml中有錯誤的提供者。它似乎有效,但造成了所提到的錯誤。下面接受我自己的答案。 –

+0

感謝您的回答。我同時也找到了一個「解決方案」: - | (請參閱上面編輯的帖子)。我仍然不滿意,但至少現在它再次運作。 – Malvin

+1

我的猜測是,它可能與類加載有關。你說你有Dali和Seam插件。大概他們都有JPA的實現,而Dali不是正確的。 –