我正在努力解決如何爲共享某些實體的兩個不同項目進行映射。由於它們只共享有限的映射子集,我的第一個想法是將這些映射分離出來放入單獨的jar中。我使用hibernate註釋來完成映射(所以它們在類文件中,而不是單獨的XML)。如何依賴來自單獨項目的hibernate註釋映射?
項目A和項目B都依賴於此映射項目,其中只包含幾個hibernate映射。項目A沒有自己的映射,但是項目B有。無論我做什麼,總是會出現問題,因爲如果我沒有爲映射項目配置持久性單元,映射永遠不會被啓用。同樣,對於項目B.如果我做了映射項目配置一個持久單元,項目中的工作,但運行在項目B中的查詢只是給了我(Mapping
恰好是類的名稱):
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Mapping is not mapped
我相信這是由項目B擁有自己的持久性單元造成的,顯然這兩個並沒有被合併。我真的不希望他們,我寧願只在項目A/B中配置一個,而不是他們依賴的jar。那麼是否有一種方法可以讓hibernate掃描並將註釋映射到依賴關係jar中,並將它們添加到當前的持久性單元中?
由於看起來是有用的。我不是自己創建SessionFactory,而是通過Spring的LocalContainerEntityManagerFactoryBean(即通過查看persistence.xml來構造HibernatePersistence)。很可能這只是錯誤的,但是你不知道如何通過持久性文件中的某些配置來獲得相同的結果? – wds 2010-08-03 12:13:36
@wds對不起,但據我所知,LocalContainerEntityManagerFactoryBean不提供類似的行爲。查看更新 – 2010-08-03 12:49:05
好的,謝謝。看起來分離映射的任何方式都不會成爲一個定時器。接口相當穩定,數據庫級別的變化可能需要對兩個項目代碼進行邏輯更改,所以我現在要複製映射(畢竟只有3個類,但這就是它的啓動方式)。我接受你的答案,因爲它回答了問題,而不是我希望的方式。 :-) – wds 2010-08-06 12:50:34