У меня есть два источника данных, определенных в файле Applicaton.yml для приложения с весенней загрузкой:
application.yml:
spring:
datasource:
jdbcUrl: jdbc:sqlserver://db_server_url;integratedSecurity=false;databaseName=DB1
username: user1
password: pwd1
datasource2:
jdbcUrl: jdbc:sqlserver://db_server_url;integratedSecurity=false;databaseName=DB2
username: user2
password: pwd2
Бины для настройки этих двух источников данных:
@Configuration
public class DatasourceConfigure {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource2")
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
}
У меня есть одна таблица в каждом источнике данных. Я определил сущность и файл репозитория java для каждой таблицы. У меня нет проблем с выполнением операций CRUD из Postman для таблицы в первом источнике данных. Однако я получил "The INSERT permission was denied on the object 'CAR'"
, когда пытался выполнить POST для создания записи автомобиля во втором источнике данных (datasource2) через репозиторий (POST: http://localhost:8080/myapp/cars
). Я смог сделать GET http://localhost:8080/myapp/cars
. Может кто-нибудь, пожалуйста, сообщите мне, почему я получаю разрешение на INSERT / UPDATE для второго источника данных?
Файл Entity java для таблицы, определенной во втором источнике данных - datasource2:
@Data
@Entity
@Table(name = "CAR", schema = "mySchema", catalog = "DB2")
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id; // PK
@Column(name = "NAME")
private String name;
}
Репозиторий java Файл:
@RepositoryRestResource(collectionResourceRel = "cars", path = "cars")
public interface CarRepository extends PagingAndSortingRepository<Car, Integer> {
@RestResource(path = "byid") // PK
Car findById(@Param("id") int id);
}