以編程方式向OpenJPA注冊實體類型

我剛剛開始為Isis開發 OpenJPA對象庫 。 在一般情況下,可以在persistence.xml文件中注冊實體類型。 但是,Isis是一個框架,可以構建自己的元模型,并且可以自行確定哪些類構成實體。 因此,我不想強??迫開發人員重復自己的工作 ,所以難題就變成了如何在Isis代碼中以編程方式注冊實體類型。

看起來很簡單,如果有點難看。 OpenJPA允許以編程方式定義某些關鍵組件的實現; 這些在屬性映射中指定,然后傳遞給javax.persistence.Persistence.createEntityManager(null,props) 。 但它也支持可用于通過setter注入初始化那些組件的語法。

在我的情況下,感興趣的組件是openjpa.MetaDataFactory 。 有一次我以為自己會寫我自己的實現。 但事實證明,標準實現滿足了我的需要,因為它允許通過其setTypes(List <String>)增幅器注入類型。 字符串列表以;分隔列表的形式傳遞到該屬性中。

所以,這就是我最終得到的結果:

final Map<String, String> props = Maps.newHashMap();final String typeList = entityTypeList();
props.put("openjpa.MetaDataFactory","org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory(types=" + typeList + ")");// ... then add in regular properties such as 
// openjpa.ConnectionURL, openjpa.ConnectionDriverName etc...entityManagerFactory = Persistence.createEntityManagerFactory(null, props);

在我的情況下, EntityTypeList()看起來像這樣:

private String entityTypeList() {final StringBuilder buf = new StringBuilder();// loop thru Isis' metamodel looking for types that have been annotated using @Entityfinal Collection<ObjectSpecification> allSpecifications = getSpecificationLoader().allSpecifications();for(ObjectSpecification objSpec: allSpecifications) {if(objSpec.containsFacet(JpaEntityFacet.class)) {final String fqcn = objSpec.getFullIdentifier();buf.append(fqcn).append(";");}}final String typeList = buf.toString();return typeList;
}

歡迎評論,一如既往

參考: Dan Haywood博客博客中的JCG合作伙伴 Dan Haywood以編程方式在OpenJPA中注冊實體類型 。


翻譯自: https://www.javacodegeeks.com/2012/06/registering-entity-types-with-openjpa.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372558.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux redis客戶端,Redisson 3.4.0和2.9.0發布,Redis客戶端

Redisson 3.4.0和2.9.0發布&#xff0c;Redis客戶端發布時間:2017-04-27 09:12:16來源:紅聯作者:baihuoRedisson于2017年4月26日發布了3.4.0和2.9.0版本Redisson是架設在Redis基礎上的一個Java駐內存數據網格(In-Memory Data Grid)。充分的利用了Redis鍵值數據庫提供的一系列優…

LeetCode 349 Intersection of Two Arrays

Given two arrays, write a function to compute their intersection. Example: Given nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. 思路&#xff1a; 利用ArrayList的contains(Object o)方法進行交集的查詢。 解法&#xff1a; 1 import java.util.ArrayList;2 3 publi…

shell腳本1——變量 $、read、``

與Shell變量相關的幾個命令&#xff1a; 變量只在當前Shell中生效. source 這個命令讓腳本影響他們父Shell的環境&#xff08;. 可以代替source命令&#xff09; export 這個命令可以讓腳本影響其子Shell的環境 () unset 從環境中刪除變量 其他幾個與變量有關的命令&#xff1…

令人印象深刻的第一個Apache Camel版本

為了準備下周的CamelOne會議&#xff0c;我花了一些時間回顧一下Apache Camel項目的歷史。 因此&#xff0c;除其他外&#xff0c;我了解了Apache Camel的第一個正式1.0版本 。 Apache Camel 1.0 – 5年前 我看的越多&#xff0c;這個版本的事實給我留下了深刻的印象。 現在您…

Linux禁用user01賬戶,Linux?管理用戶?useradd

創建用戶、設置密碼、修改用戶、刪除用戶&#xff1a;useradd testuser 創建用戶testuseruseradd [選項]useradd 命令選項-u uid:指定新用戶的uid,默認用當前最大uid加1-g group:指定新用戶所在的組(私有組),該組必須存在-G group:指定新用戶的附加組-d dir:指定新用戶的自家目…

css小細節

1. 文字居中顯示 水平居中&#xff1a; text-align: center; 垂直居中&#xff1a; line-height: (height); 2.子元素相對于父元素的絕對布局。 父元素一定要 position: relative/absolute/fixed; 默認position 是static 轉載于:https://www.cnblogs.com/zcancandice/p/5…

為什么在2012/2013年我將在新的Enterprise Java項目中繼續使用Spring *和* Java EE

自從我擔任技術決策職務以來已經過去了一年多&#xff0c;很高興看到我仍然與之保持著完美的和諧。 幾個月前&#xff0c;我在KaiWhner的一個不錯的博客中寫了一個有關JEE與Spring的答案。 如果觀點沒有不同&#xff0c;那么討論的附加值在哪里&#xff1f; 我確實同意Kai的許多…

linux ubuntu 五筆輸入法,ubuntu下安裝fcitx五筆輸入法

安裝fcitx輸入法sudo add-apt-repository ppa:fcitx-team/stable #添加安裝源&#xff0c;apt-get 添加&#xff0c;nightly源也可以sudo apt-get update #更新源&#xff0c;否則無法安裝fcit…

淺談Windows下SVN在Android Studio中的配置、基本使用及解除關聯

看到網上很多關于svn環境配置和關聯Android-Studio的很多博文&#xff0c;發現很零散&#xff0c;想集大家所長整理一下&#xff1a; 在AndroidStudio中開發版本控制中&#xff0c;除了Git就是SVN&#xff0c;和Eclipse不同Android Studio沒有提供單獨的插件&#xff0c;只能和…

四. 基于環視Camera的BEV感知算法-BEVDepth

目錄 前言0. 簡述1. 算法動機&開創性思路2. 主體結構3. 損失函數4. 性能對比總結下載鏈接參考 前言 自動駕駛之心推出的《國內首個BVE感知全棧系列學習教程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們來學習下課程第四章——基于環視Cam…

【騰訊Bugly干貨分享】Android Patch 方案與持續交付

本文來自于騰訊bugly開發者社區&#xff0c;非經作者同意&#xff0c;請勿轉載&#xff0c;原文地址&#xff1a;http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不僅系統版本眾多&#xff0c;機型眾多&#xff0c;而且各個市場都各有各的政策和審核速度&#xff0…

App Engine中的Google Services身份驗證,第1部分

這篇文章將說明如何構建一個簡單的Google App Engine&#xff08;GAE&#xff09;Java應用程序&#xff0c;該應用程序可針對Google進行身份驗證&#xff0c;并利用Google的OAuth授權訪問Google的API服務&#xff08;例如Google Docs&#xff09;。 此外&#xff0c;在Google已…

c語言中空格的作用是什么,C語言中空格和\0的區別

\0 為字符串結束符&#xff0c;比如說&#xff1a;abcd (空格)cdefg&#xff1b;存入數組時&#xff0c;空格作為一個字符占有一個字節的空間&#xff0c;我們可以把它看著一個字符去處理。而“\0 ” 則是這個字符串的結束標識符&#xff0c;也占有一個字節的空間&#xff0c;表…

C++11 新特性:Lambda 表達式

參考文章&#xff1a;https://blogs.oracle.com/pcarlini/entry/c_1x_tidbits_lambda_expressions 或許&#xff0c;Lambda 表達式算得上是 C 11 新增特性中最激動人心的一個。這個全新的特性聽起來很深奧&#xff0c;但卻是很多其他語言早已提供&#xff08;比如 C#&#xff0…

山東自考c語言程序設計停考了嗎,2018山東自考停考專業有哪些

自考每年都會停考一批的專業以適應社會的發展&#xff0c;今年山東自考的停考專業有哪些&#xff1f;本文由學梯網小編整理發布&#xff0c;僅供參考。2018年山東自考停考專業有什么根據山東省教育考試院發布的《關于山東自學考試停考國際貿易(專科)等19個專業的通知》知悉&…

公開調用私有Java方法?

我們是Java開發人員&#xff0c;在Java中已知4種訪問修飾符&#xff1a;私有&#xff0c;受保護&#xff0c;公共和包。 好吧&#xff0c;除了私有外&#xff0c;最后三個可以通過繼承&#xff0c;相同的包或實例從類外部調用。 現在&#xff0c;常見的問題是&#xff0c;可以公…

Java 異常處理 try catch finally throws throw 的使用和解讀(一)

最近的一個內部表決系統開發過程中&#xff0c;發現對異常處理還存在一些模棱兩可的地方&#xff0c;所以想著整理一下主要涉及到&#xff1a;1.try catch finally throws throw 的使用和解讀2.自定義異常的使用3.常見的運行異常 /** * Java 異常處理 * try catch finally thr…

C語言字符像素,返回字符串寬度 (以像素為單位)

[c]代碼庫#include #include #include #include int main(void){/* request auto detection */int gdriver DETECT, gmode, errorcode;int x 0, y 0;int i;char msg[80];/* initialize graphics and local variables */initgraph(&gdriver, &gmode, "");/…

Spring動態物業管理

靜態和動態屬性對于運營管理以及在生產級別更改系統行為都非常重要。 特別地&#xff0c;動態參數減少了服務中斷。 本文展示了如何使用Quartz在Spring Applications中管理動態屬性。 有關使用 Spring和Quartz集成提供“ 使用Spring和Quartz的多作業計劃服務”的文章。 讓我們看…

[BZOJ1005][HNOI2008]明明的煩惱

[BZOJ1005][HNOI2008]明明的煩惱 試題描述 自從明明學了樹的結構,就對奇怪的樹產生了興趣......給出標號為1到N的點,以及某些點最終的度數,允許在任意兩點間連線,可產生多少棵度數滿足要求的樹? 輸入 第一行為N(0 < N < 1000),接下來N行,第i1行給出第i個節點的度數Di,如…