jpa entitymanagerfactory,jpa entity
目录
JPAEntityManager踩坑之更改持久性上下文一、原因二、春季作业的装配区(JobPackArea)多数据源怎么使用实体管理器三、使用EntityManager @持久性上下文(unitName= EntityManager factory )
JPA EntityManager踩坑之更改PersistenceContext
一、原因
项目中配置两个春季作业的装配区(JobPackArea)的数据源,使用实体管理器的时候默认是选择第一个,导致查询不到第二个数据源的数据。
二、Spring JPA多数据源怎么使用EntityManager
1.春季作业的装配区(JobPackArea)多数据源的配置请查看此文章:SpringData JPA基本/高级/多数据源使用
2.引入EntityManager:
@ persistence context(unitName= primaryPersistenceUnit )private EntityManager EntityManager;@PersistenceContext中的酒水名称指的是使用哪一个数据源的持久性单元,持久性单元是在配置数据源的时候配置的,每一个数据源的持久性单元都是不一样的,这样就可以使用不同的数据源来查询数据了。
配置持久性单元:
@ Bean(name= entityManagerFactoryPrimary )@ primary public localcontainereentitymanagerfactorybean entityManagerFactoryPrimary(EntityManagerFactoryBuilder){ return builder .数据源(primaryDataSource).属性(供应商属性).包( com.neo.model) //设置实体类所在位置.持久性单元(“primaryPersistenceUnit”).build();}
三、使用EntityManager
String SQL=select id,code,name, desc from drgo _ cd10 _ dx _ code where name like( % content。trim() % )记录器。info( search getProductOwnerId SQL : SQL);查询query=entitymanager。createnativequery(SQL);ListObject[]dbList=query。获取结果列表();listic D10 codedata结果列表=new ArrayList D10 codedata();if (dbList!=空数据库列表。size()0){ for(int I=0;IDB列表。size();I){ Object[]o=dblist。get(I);String id=o[0]==null? :o[0].toString();字符串代码=o[1]==null? : o[1].toString();String name=o[0]==null? : o[2].toString();字符串desc=o[1]==null? : o[3].toString();ICD 10码数据tempCode=新ICD 10码数据(long。解析长(id),代码,名称,desc);结果列表。add(tempCode);}}
@PersistenceContext(unitName = "entityManagerFactory")
@ Configuration @ EnableTransactionManagement(mode=建议模式.ASPECTJ,proxyTargetClass=true)@ components可以({ cn。com。appname。cn.com.appName.dao,cn经理。com。appname。道。JPA })公共类AppConfig扩展抽象管理器{ @ Bean(name= entitymanager factory )公共localcontainereentitymanager factory Bean entitymanager factory Bean(){ localcontainentitymanager factory Bean factory Bean=new localcontainereentitymanager factory Bean();工厂豆。设置数据源(数据源(空));工厂豆。setpackagestoscan(新字符串[]{ cn。 com AppConfig .应用程序名称 .实体 });hibernatejpavendoraadapter vendorAdapter=new hibernatejpavendoraadapter();供应商适配器。设置数据库平台(hibernate方言);如果(记录器。isdebugenabled()){//供应商适配器。setshowsql(true);//供应商适配器。setgenerateddl(true);}//供应商适配器。setgenerateddl(true);工厂豆。setjpavendoradapter(vendorAdapter);//工厂bean。setjpaproperties(this。additionlproperties());返回工厂Bean} }公共抽象类MyBaseDaoE扩展BaseEntity扩展basedao jpae { protected mybase Dao(){ }//unitName与localcontainereentitymanagerfactorybean类的容器对象的名称一致@ persistence context(unitName= EntityManager factory )public void setJpaEntityManager(EntityManager EntityManager){ super。setentitymanager(实体管理器);} }以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。