mysql - Spring JPA not connecting to multiple databases: Saying entity managers found 2 -
this new file i've added in addition existing persistenceconfig.java. i'm getting entity manager 2 found.
we're not using xml config except jpa repositories in spring-data.xml
the issues occuring 1 package created newly logging activity , included in jpa repository.
before adding below class, normal previously
package com.jumbotree.kumcha.config; import java.util.properties; import javax.persistence.entitymanagerfactory; import javax.persistence.persistencecontext; import javax.sql.datasource; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.beans.factory.factorybean; import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.context.annotation.importresource; import org.springframework.context.annotation.propertysource; import org.springframework.core.env.environment; import org.springframework.dao.annotation.persistenceexceptiontranslationpostprocessor; import org.springframework.dao.support.persistenceexceptiontranslator; import org.springframework.data.jpa.repository.config.enablejparepositories; import org.springframework.jdbc.datasource.drivermanagerdatasource; //import org.springframework.orm.hibernate5.hibernateexceptiontranslator; import org.springframework.orm.hibernate4.hibernateexceptiontranslator; import org.springframework.orm.jpa.jpatransactionmanager; import org.springframework.orm.jpa.jpavendoradapter; import org.springframework.orm.jpa.localcontainerentitymanagerfactorybean; import org.springframework.orm.jpa.vendor.hibernatejpavendoradapter; import org.springframework.transaction.platformtransactionmanager; import org.springframework.transaction.annotation.enabletransactionmanagement; @configuration @enabletransactionmanagement //@propertysource("classpath:kumcha.properties") @propertysource("file:/opt/jumbotree/kumcha2/kms.properties") @enablejparepositories(basepackages = "com.jumbotree.kumcha.crm.model", entitymanagerfactoryref = "createentitymanagerfactorychargingbean", transactionmanagerref = "createchargingtransactionmanagerbean") @importresource("classpath:spring-data.xml") public class chargingpersistenceconfig { @autowired private environment env; private static final logger logger = loggerfactory.getlogger(chargingpersistenceconfig.class); @bean public datasource createchargingdatasourcebean() { logger.info("charging datasource created..."); drivermanagerdatasource datasource = new drivermanagerdatasource(); datasource.setdriverclassname(env.getproperty("charging.db.driver")); datasource.seturl(env.getproperty("charging.db.url")); datasource.setusername(env.getproperty("charging.db.username")); datasource.setpassword(env.getproperty("charging.db.password")); return datasource; } //here entity manager added , causing issue @bean //(name = "entitymanagerfactorycharging") @persistencecontext (unitname="chargingpu") public factorybean<entitymanagerfactory> createchargingentitymanagerfactorybean(@qualifier("createchargingdatasourcebean") datasource dsc) { localcontainerentitymanagerfactorybean chargingentitymanagerfactorybean = new localcontainerentitymanagerfactorybean(); logger.info("charging entityman created..."); try { chargingentitymanagerfactorybean.setdatasource(createchargingdatasourcebean()); chargingentitymanagerfactorybean.setpackagestoscan("com.jumbotree.kumcha.crm.model"); chargingentitymanagerfactorybean.setjpavendoradapter(createjpavendoradapterbean()); chargingentitymanagerfactorybean.setjpaproperties(createjpaproperties()); } catch (exception e) { // todo: handle exception logger.error(e.tostring()); } return chargingentitymanagerfactorybean; } private properties createjpaproperties() { logger.info("hibernate.show_sql :::: "+env.getproperty("hibernate.show_sql")); return new properties() { { // setproperty("hibernate.hbm2ddl.auto", "create-drop"); setproperty("hibernate.show_sql", env.getproperty("hibernate.show_sql")); setproperty("hibernate.format_sql", env.getproperty("hibernate.format_sql")); // setproperty("hibernate.cache.use_second_level_cache", "true"); // setproperty("hibernate.cache.provider_class", "org.hibernate.cache.ehcacheprovider"); // setproperty("shared-cache-mode", "disable_selective"); //<property name="hibernate.cache.use_second_level_cache" value="true"/> //setproperty("hibernate.connection.zerodatetimebehavior", "converttonull"); } }; } private jpavendoradapter createjpavendoradapterbean() { hibernatejpavendoradapter jpavendoradapter = new hibernatejpavendoradapter(); // jpavendoradapter.setdatabase(database.valueof(env.getproperty("db.name"))); jpavendoradapter.setshowsql(true); // jpavendoradapter.setgenerateddl(true); jpavendoradapter.setdatabaseplatform(env.getproperty("hibernate.dialect")); return jpavendoradapter; } @bean //(name = "transactionmanager") public platformtransactionmanager createchargingtransactionmanagerbean() throws exception { logger.info("charging transactionman created..."); jpatransactionmanager chargingtransactionmanager = new jpatransactionmanager(); chargingtransactionmanager.setentitymanagerfactory(createchargingentitymanagerfactorybean(createchargingdatasourcebean()).getobject()); return chargingtransactionmanager; } @bean public persistenceexceptiontranslationpostprocessor createpersistenceexceptiontranslationpostprocessor() { return new persistenceexceptiontranslationpostprocessor(); } // required if using hibernate 4 @bean public persistenceexceptiontranslator createpersistenceexceptiontranslatorbeaan() { return new hibernateexceptiontranslator(); } }
loggerrepository
cannot choose 1 of 2 beans createchargingentitymanagerfactorybean
, createentitymanagerfactorybean
make 1 of them primary and/or specify qualifier. (btw qualifier it's necessary make 1 of beans primary)
cannot suggest cconfig changes without code.
Comments
Post a Comment