Like tittle says I Have two DataSource in my application and the first repository is work fine , but my second repository can't save update or delete only query works good . when i check the console there is no error appear . Can some one help?
first repository config
package com.iisigroup.product.insightplatform.config;
import com.iisigroup.product.insightplatform.repository.jpa.CustomMsgRutLogsRepository;
import com.iisigroup.product.insightplatform.repository.jpa.impl.BaseRepositoryImpl;
import com.iisigroup.product.insightplatform.repository.jpa.impl.MsgRutLogsGeneralRepositoryImpl;
import com.iisigroup.product.insightplatform.repository.jpa.impl.MsgRutLogsOracleRepositoryImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.JdbcTemplate;
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;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.iisigroup.product.insightplatform.repository.jpa"
, repositoryBaseClass = BaseRepositoryImpl.class,
transactionManagerRef = "JPATra", entityManagerFactoryRef = "entityManagerFactory1")
public class JPAConfig {
@Autowired
private DataSource dataSource;
@Autowired
private Environment env;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
@Primary
@Bean(name = "JPATra")
public PlatformTransactionManager transactionManager1() {
final JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory1());
return txManager;
}
@Bean(name = "entityManagerFactory1")
@Primary
public EntityManagerFactory entityManagerFactory1() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaProperties(hibernateProperties());
em.setJpaVendorAdapter(vendorAdapter);
em.setPackagesToScan(new String[]{"com.iisigroup.product.insightplatform.domain.jpa"});
em.setPersistenceUnitName("emfBW");
em.afterPropertiesSet();
return em.getObject();
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.show_sql", "false");
properties.setProperty("hibernate.max_fetch_depth", "3");
properties.setProperty("hibernate.jdbc.fetch_size", "50");
properties.setProperty("hibernate.jdbc.batch_size",
env.getProperty("spring.jpa.properties.hibernate.jdbc.batch_size"));
properties.setProperty("hibernate.enable_lazy_load_no_trans", "true");
return properties;
}
}
second repository
package com.iisigroup.product.insightplatform.config;
import com.iisigroup.product.insightplatform.repository.traffic.BaseRepositoryImpl;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.JdbcTemplate;
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;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.iisigroup.product.insightplatform.repository.traffic",
repositoryBaseClass = BaseRepositoryImpl.class,
entityManagerFactoryRef = "trafficentityManagerFactory",
transactionManagerRef = "traffictransactionManager")
public class TrafficJPAConfig {
@Autowired
private Environment env;
@Bean(name = "trafficDatasource")
public HikariDataSource trafficDatasource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("secondUrl");
dataSource.setUsername("secondUser");
dataSource.setPassword("secondPass");
dataSource.setMaximumPoolSize(8);
dataSource.setIdleTimeout(15);
dataSource.setConnectionTimeout(3000);
return dataSource;
}
@Bean
public JdbcTemplate trafficjdbcTemplate() {
return new JdbcTemplate(trafficDatasource());
}
@PersistenceContext(unitName="traffic")
@Bean(name = "traffictransactionManager")
public PlatformTransactionManager traffictransactionManager() {
final JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(productEntityManager().getObject());
return txManager;
}
@PersistenceContext(unitName="traffic")
@Bean(name = "trafficentityManagerFactory")
public EntityManagerFactory trafficentityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(trafficDatasource());
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaProperties(hibernateProperties());
em.setJpaVendorAdapter(vendorAdapter);
em.setPackagesToScan(new String[]{"com.iisigroup.product.insightplatform.repository.traffic","com.iisigroup.product.insightplatform.domain.jpa"});
em.setPersistenceUnitName("traffic");
em.afterPropertiesSet();
return em.getObject();
}
@Bean
@PersistenceContext(unitName="traffic")
public LocalContainerEntityManagerFactoryBean productEntityManager() {
final LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(trafficDatasource());
em.setPackagesToScan(
new String[] {"com.iisigroup.product.insightplatform.repository.traffic","com.iisigroup.product.insightplatform.domain.jpa"});
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(hibernateProperties());
return em;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.max_fetch_depth", "3");
properties.setProperty("hibernate.jdbc.fetch_size", "50");
properties.setProperty("hibernate.jdbc.batch_size",
env.getProperty("spring.jpa.properties.hibernate.jdbc.batch_size"));
properties.setProperty("hibernate.enable_lazy_load_no_trans", "true");
return properties;
}
}
And I try to override delete method with under code , it's work great
@Override
public void delete(String s) {
TrafficJPAConfig cc = new TrafficJPAConfig();
JdbcTemplate temp = cc.trafficjdbcTemplate();
String sql = String.format("delete from UserColumnGrpFieldValueSTB where UUID ='%s' ", s);
temp.execute(sql);
// super.delete(s);
}
after using second Data source in isolated environment , it didn't make any difference. But it work after I change my second Data source config like my code below, it works fine. I don't know the reason it work and i'm curious of that, any one knows why?
@Configuration
//@ComponentScan("com.iisigroup.product.insightplatform.domain.jpa")
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.iisigroup.product.insightplatform.repository.traffic",
repositoryBaseClass = BaseRepositoryImpl.class,
entityManagerFactoryRef = "trafficentityManagerFactory",
transactionManagerRef = "traffictransactionManager")
public class TrafficJPAConfig {
@Autowired
private Environment env;
@Bean(name = "trafficDatasource")
public HikariDataSource trafficDatasource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("secondDatasouce");
dataSource.setUsername("secondDatasouce");
dataSource.setPassword("secondDatasouce");
dataSource.setMaximumPoolSize(8);
dataSource.setIdleTimeout(15);
dataSource.setConnectionTimeout(3000);
return dataSource;
}
@Bean
public JdbcTemplate trafficjdbcTemplate() {
return new JdbcTemplate(trafficDatasource());
}
@PersistenceContext(unitName="traffic")
@Bean(name = "traffictransactionManager")
public PlatformTransactionManager traffictransactionManager() {
final JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(trafficentityManagerFactory());
return txManager;
}
@PersistenceContext(unitName="traffic")
@Bean(name = "trafficentityManagerFactory")
public EntityManagerFactory trafficentityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(trafficDatasource());
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaProperties(hibernateProperties());
em.setJpaVendorAdapter(vendorAdapter);
// em.setEntityManagerFactoryInterface(MultiEntityManagerFactory.class);
em.setPackagesToScan(new String[]{"com.iisigroup.product.insightplatform.repository.traffic","com.iisigroup.product.insightplatform.domain.jpa"});
em.setPersistenceUnitName("traffic");
em.afterPropertiesSet();
return em.getObject();
}
// @Bean
// @PersistenceContext(unitName="traffic")
// public LocalContainerEntityManagerFactoryBean productEntityManager() {
// final LocalContainerEntityManagerFactoryBean em
// = new LocalContainerEntityManagerFactoryBean();
// em.setDataSource(trafficDatasource());
// em.setPackagesToScan(
// new String[] {"com.iisigroup.product.insightplatform.repository.traffic","com.iisigroup.product.insightplatform.domain.jpa"});
// JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
//// final HashMap<String, Object> properties = new HashMap<String, Object>();
//// properties.put("hibernate.hbm2ddl.auto", "auto");
//// properties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
//// em.setJpaPropertyMap(properties);
// em.setJpaVendorAdapter(vendorAdapter);
// em.setJpaProperties(hibernateProperties());
//
// return em;
// }
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.max_fetch_depth", "3");
properties.setProperty("hibernate.jdbc.fetch_size", "50");
properties.setProperty("hibernate.jdbc.batch_size",
env.getProperty("spring.jpa.properties.hibernate.jdbc.batch_size"));
properties.setProperty("hibernate.enable_lazy_load_no_trans", "true");
return properties;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.