spring - save operation in jpa data repository doesn't work when define mutiple @EnableJpaRepositories classes -
i researching on usage of spring data jpa. appreciated if can check wrong.
i created 2 jpa repositories: apirepository , clientrepository in 2 different packages , created 2 configuration classes configure these 2 repositories using @enablejparepositories annotation respectively.
when spring application calls these 2 repositories' save() methods @ same time, apirepository.save() fail, without exception. if move @primiary annotation (this avoid nouniquebeandefinitionexception) apiappconfig class, clientrepository.save fail without exception. opened sql log, no update sql executed failing method.
did hit such situation? how use spring data jpa?
apirepository
package test.api; public interface apirepository extends repository<api, long>{ .... } apiappconfig
package test.api; @configuration @componentscan(basepackages = "test.api") @enablejparepositories( basepackages = "test.api.repository", entitymanagerfactoryref = "apientitymanagerfactory", transactionmanagerref="apitransactionmanager", enabledefaulttransactions=true ) @enabletransactionmanagement public class apiappconfig { @bean public localcontainerentitymanagerfactorybean apientitymanagerfactory(){ ... } @bean public platformtransactionmanager apitransactionmanager() { ... } @bean public datasource apidatasource() { ... } } apiservice
package test.api; @service public class apiservice { @autowired private apirepository apirepository; public api findone(long id){ return apirepository.findone(id); } @transactional("apitransactionmanager") public void updateone(api api){ apirepository.save(api); } } clientrepository
package test.client; public interface clientrepository extends repository<client, long>{ ... } clientappconfig
package test.client; @configuration @componentscan(basepackages = "test.client") @enablejparepositories( basepackages = "test.client", entitymanagerfactoryref = "entitymanagerfactory", transactionmanagerref="transactionmanager", enabledefaulttransactions=true ) @enabletransactionmanagement public class clientappconfig { @bean @primary public localcontainerentitymanagerfactorybean entitymanagerfactory() { ... } @bean public platformtransactionmanager transactionmanager() { ... } @bean @primary public datasource datasource() { ... } } clientservice
package test.client; @service public class clientservice { @autowired private clientrepository clientrepository; public daotest findone(long id){ return clientrepository.findone(id); } @transactional("transactionmanager") public void updateone(client client){ clientrepository.save(client); } }
in apiappconfig class have set
@enablejparepositories( basepackages = "test.api.repository", but apirepository in package test.api , not in test.api.repository, @ least can see in apirepository class source code.
so either change basepackages value reflect correct one, or move apirepository inside test.api.repository package
Comments
Post a Comment