Не работает метод Save() в CrudRepository использую Java Spring Boot
У меня есть 2 datasource и соответственно 2 конфиг класса
Первая база данных пусть будет myDb1, а вторая myDb2
Ниже конфиг класс для myDb1 (думаю понятно что второй класс будет точно такой же за исключением смамого названия бд)
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
basePackages = "com.example.myDb1.repository",
entityManagerFactoryRef = "myDb1EntityManagerFactory",
transactionManagerRef = "myDb1TransactionManager"
)
public class MyDb1JpaConfig {
@Autowired
private Environment env;
@Bean(name = "myDb1DataSource")
public DataSource myDb1DataSource(){
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(env.getProperty("spring.datasource.myDb1.url"));
dataSource.setUsername(env.getProperty("spring.datasource.myDb1.username"));
dataSource.setPassword(env.getProperty("spring.datasource.myDb1.password"));
dataSource.setDriverClassName(env.getProperty("spring.datasource.myDb1.driver-class-name"));
dataSource.setMaximumPoolSize(10);
return dataSource;
}
@Bean(name = "myDb1EntityManagerFactory")
public LocalContainerEntityManagerFactoryBean myDb1EntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("myDb1DataSource") DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages("com.example.myDb1.entity")
.persistenceUnit("myDb1")
.build();
}
@Bean(name = "myDb1TransactionManager")
public PlatformTransactionManager myDb1TransactionManager(
@Qualifier("myDb1EntityManagerFactory") LocalContainerEntityManagerFactoryBean entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory.getNativeEntityManagerFactory());
}
}
И есть репозиторий для бд myDb1, который соответсвенно храниться в package com.example.repository.myDb1.MyRepository
public interface MyRepositoryextends CrudRepository<User, Long> { User getUserById(Long id);
@Transactional
void deleteByUserId(Long userId);
}
И наконец сама конфигурация для все этог в конфиг файле application.yml
spring:
datasource:
myDb1:
url: jdbc:mysql://localhost:3306/myDb1?zeroDateTimeBehavior=CONVERT_TO_NULL
username: user1
password: password1
driver-class-name: com.mysql.cj.jdbc.Driver
myDb2:
url: jdbc:mysql://localhost:3306/myDb2?zeroDateTimeBehavior=CONVERT_TO_NULL
username: user2
password: password2
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
show-sql: true
properties:
hibernate:
format_sql: true
hibernate:
ddl-auto: update
generate-ddl: true
Так вот. Почему-то метод save не работает, хотя метод getUserById работает прекрасно. Уверен дело в том что я что-то не так настроил где в классе конфиг, но я сопля в Spring Boot поэтому не могу понять что.
Хотелось бы найти ответ на этот вопрос, и если кто знает подскажите как лучше организовывать использование сразу нескольких DataSource и CrudRepository для работы с данными