{"id":1879,"date":"2017-11-28T06:59:27","date_gmt":"2017-11-28T06:59:27","guid":{"rendered":"http:\/\/www.msinterdev.org\/wp\/2017\/11\/28\/spring-boot-multiple-datasource\/"},"modified":"2017-11-28T06:59:27","modified_gmt":"2017-11-28T06:59:27","slug":"spring-boot-multiple-datasource","status":"publish","type":"post","link":"http:\/\/www.msinterdev.org\/wp\/2017\/11\/28\/spring-boot-multiple-datasource\/","title":{"rendered":"[Spring-Boot] Multiple Datasource"},"content":{"rendered":"<p><strong>[DateSouece &#8211; 1]<\/strong><br \/>@Configuration<br \/>@EnableJpaRepositories(<br \/>&nbsp;&nbsp;&nbsp; basePackages = &#8220;com.haii.hmt.component.business.entity.admin&#8221;,<br \/>&nbsp;&nbsp;&nbsp; entityManagerFactoryRef = &#8220;adminEntityManager&#8221;,<br \/>&nbsp;&nbsp;&nbsp; transactionManagerRef = &#8220;adminTransactionManager&#8221;<br \/>)<br \/>public class AdminDataConfig<br \/>{<br \/>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private AdminDatasourceProp adminDatasourceProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private JpaHibernateProp jpaHibernateProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private HikariConnectionPoolProp hikariConnectionPoolProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Bean<br \/>&nbsp;&nbsp;&nbsp; @Primary<br \/>&nbsp;&nbsp;&nbsp; public LocalContainerEntityManagerFactoryBean adminEntityManager() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LocalContainerEntityManagerFactoryBean em<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new LocalContainerEntityManagerFactoryBean();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setDataSource(adminDataSource());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setPackagesToScan(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new String[] { &#8220;com.hi.entity&#8221; });<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HibernateJpaVendorAdapter vendorAdapter<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new HibernateJpaVendorAdapter();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setJpaVendorAdapter(vendorAdapter);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String, Object&gt; properties = new HashMap&lt;&gt;();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.put(&#8220;hibernate.hbm2ddl.auto&#8221;, this.jpaHibernateProp.getDdlAauto() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.put(&#8220;hibernate.dialect&#8221;, this.jpaHibernateProp.getDialect() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setJpaPropertyMap(properties);<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return em;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Primary<br \/>&nbsp;&nbsp;&nbsp; @Bean<br \/>&nbsp;&nbsp;&nbsp; public DataSource adminDataSource() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HikariDataSource ds = new HikariDataSource();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setDataSourceProperties(this.getProperties());<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setPoolName( this.adminDatasourceProp.getPoolName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ds.setConnectionTestQuery(datasourceProperties.getConnectionTes\\<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tQuery());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setDataSourceClassName( this.adminDatasourceProp.getDataSourceClassName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ds.setIdleTimeout(datasourceProperties.getIdleTimeout());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setMaximumPoolSize( this.hikariConnectionPoolProp.getMaximumPoolSize() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ds;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; private Properties getProperties()<br \/>&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties prop = new Properties();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;serverName&#8221;, this.adminDatasourceProp.getServerName() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;databaseName&#8221;, this.adminDatasourceProp.getDatabaseName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;user&#8221;, this.adminDatasourceProp.getUsername());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;password&#8221;, this.adminDatasourceProp.getPassword());<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;cachePrepStmts&#8221;, &#8220;true&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;prepStmtCacheSize&#8221;, &#8220;250&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;prepStmtCacheSqlLimit&#8221;, &#8220;2048&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;encoding&#8221;, &#8220;UTF-8&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return prop;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Primary<br \/>&nbsp;&nbsp;&nbsp; @Bean<br \/>&nbsp;&nbsp;&nbsp; public PlatformTransactionManager adminTransactionManager() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JpaTransactionManager transactionManager<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new JpaTransactionManager();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transactionManager.setEntityManagerFactory(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adminEntityManager().getObject());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return transactionManager;<br \/>&nbsp;&nbsp;&nbsp; }<br \/>}<\/p>\n<p><strong>[DataSource &#8211; 2]<\/strong><\/p>\n<p>@Configuration<br \/>@EnableJpaRepositories(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basePackages = &#8220;com.hello.entity&#8221;,<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; entityManagerFactoryRef = &#8220;userEntityManager&#8221;,<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transactionManagerRef = &#8220;userTransactionManager&#8221;<br \/>)<br \/>public class SensorDataConfig<br \/>{<br \/>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private UserDatasourceProp userDatasourceProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private JpaHibernateProp jpaHibernateProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Inject<br \/>&nbsp;&nbsp;&nbsp; private HikariConnectionPoolProp hikariConnectionPoolProp;<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Bean<br \/>&nbsp;&nbsp;&nbsp; public LocalContainerEntityManagerFactoryBean&nbsp; userEntityManager() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LocalContainerEntityManagerFactoryBean em<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new LocalContainerEntityManagerFactoryBean();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setDataSource(userDataSource());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setPackagesToScan(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new String[] { &#8220;com.haii.hmt.component.business.entity.sensor&#8221; });<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HibernateJpaVendorAdapter vendorAdapter<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new HibernateJpaVendorAdapter();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setJpaVendorAdapter(vendorAdapter);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String, Object&gt; properties = new HashMap&lt;&gt;();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.put(&#8220;hibernate.hbm2ddl.auto&#8221;, this.jpaHibernateProp.getDdlAauto() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.put(&#8220;hibernate.dialect&#8221;, this.jpaHibernateProp.getDialect() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setJpaPropertyMap(properties);<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return em;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; public DataSource userDataSource() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HikariDataSource ds = new HikariDataSource();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setDataSourceProperties(this.getProperties());<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setPoolName( this.userDatasourceProp.getPoolName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ds.setConnectionTestQuery(datasourceProperties.getConnectionTes\\<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tQuery());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setDataSourceClassName( this.userDatasourceProp.getDataSourceClassName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ds.setIdleTimeout(datasourceProperties.getIdleTimeout());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.setMaximumPoolSize( this.hikariConnectionPoolProp.getMaximumPoolSize() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ds;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; private Properties getProperties()<br \/>&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties prop = new Properties();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;serverName&#8221;, this.userDatasourceProp.getServerName() );<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;databaseName&#8221;, this.userDatasourceProp.getDatabaseName());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;user&#8221;, this.userDatasourceProp.getUsername());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;password&#8221;, this.userDatasourceProp.getPassword());<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;cachePrepStmts&#8221;, &#8220;true&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;prepStmtCacheSize&#8221;, &#8220;250&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;prepStmtCacheSqlLimit&#8221;, &#8220;2048&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.put(&#8220;encoding&#8221;, &#8220;UTF-8&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return prop;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; @Bean<br \/>&nbsp;&nbsp;&nbsp; public PlatformTransactionManager userTransactionManager() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JpaTransactionManager transactionManager<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new JpaTransactionManager();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transactionManager.setEntityManagerFactory(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userEntityManager().getObject());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return transactionManager;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>}]<\/p>\n<p><strong>[Apply Transactional ]<\/strong><\/p>\n<p><code class=\"java spaces\"><\/code><code class=\"java color1\">@Transactional<\/code><code class=\"java plain\">(<\/code><code class=\"java string\">\"userTransactionManager\"<\/code><code class=\"java plain\">)<\/code><\/p>\n<div class=\"line number26 index25 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">whenCreatingUsersWithSameEmail_thenRollback() {<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">User user1 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">User();<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user1.setName(<\/code><code class=\"java string\">\"John\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user1.setEmail(<\/code><code class=\"java string\">\"john@test.com\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user1.setAge(<\/code><code class=\"java value\">20<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user1 = userRepository.save(user1);<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">assertNotNull(userRepository.findOne(user1.getId()));<\/code><\/div>\n<div class=\"line number33 index32 alt2\">&nbsp;<\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">User user2 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">User();<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user2.setName(<\/code><code class=\"java string\">\"Tom\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user2.setEmail(<\/code><code class=\"java string\">\"john@test.com\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user2.setAge(<\/code><code class=\"java value\">10<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">try<\/code> <code class=\"java plain\">{<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">user2 = userRepository.save(user2);<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">} <\/code><code class=\"java keyword\">catch<\/code> <code class=\"java plain\">(DataIntegrityViolationException e) {<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number42 index41 alt1\">&nbsp;<\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">assertNull(userRepository.findOne(user2.getId()));<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number45 index44 alt2\">&nbsp;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>[DateSouece &#8211; 1]@Configuration@EnableJpaRepositories(&nbsp;&nbsp;&nbsp; basePackages = &#8220;com.haii.hmt.component.business.entity.admin&#8221;,&nbsp;&nbsp;&nbsp; entityManagerFactoryRef = &#8220;adminEntityManager&#8221;,&nbsp;&nbsp;&nbsp; transactionManagerRef = &#8220;adminTransactionManager&#8221;)public class AdminDataConfig{&nbsp;&nbsp;&nbsp; @Inject&nbsp;&nbsp;&nbsp; private AdminDatasourceProp adminDatasourceProp; &nbsp;&nbsp;&nbsp; @Inject&nbsp;&nbsp;&nbsp; private JpaHibernateProp jpaHibernateProp; &nbsp;&nbsp;&nbsp; @Inject&nbsp;&nbsp;&nbsp; private HikariConnectionPoolProp hikariConnectionPoolProp; &nbsp;&nbsp;&nbsp; @Bean&nbsp;&nbsp;&nbsp; @Primary&nbsp;&nbsp;&nbsp; public LocalContainerEntityManagerFactoryBean adminEntityManager() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LocalContainerEntityManagerFactoryBean em&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new LocalContainerEntityManagerFactoryBean();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setDataSource(adminDataSource());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setPackagesToScan(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new String[] { &#8220;com.hi.entity&#8221; }); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HibernateJpaVendorAdapter vendorAdapter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new HibernateJpaVendorAdapter();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em.setJpaVendorAdapter(vendorAdapter);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap&lt;String, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[163],"tags":[],"class_list":["post-1879","post","type-post","status-publish","format-standard","hentry","category-about-knowledge-programs_java"],"_links":{"self":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts\/1879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/comments?post=1879"}],"version-history":[{"count":0,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts\/1879\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/media?parent=1879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/categories?post=1879"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/tags?post=1879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}