Прежде всего, я должен заявить, что в моем проекте включены 3 базы данных.
Кажется, что любой метод о вставке в базу данных не применяется, но методы выбора делают. Странно то, что Spring Boot не может определить, какую базу данных использовать, поскольку тот же репозиторий выбирает правильную базу данных, но не может вставить. Кроме того, я не получаю ошибок ни в среде Java, ни в MySQL (я включил параметры отладки на application.properties
)
Подводя итог, метод save
не вставляется в базу данных, но тот же репозиторий выбирает без проблем. Я проверил, если у меня есть привилегии для вставки в базу данных, и я делаю (я также добавил их снова на всякий случай).
Я использую одну и ту же сущность как для выделения, так и для вставки.
Таблица, к которой я хочу получить доступ, называется log
, а база данных db1
. Кроме того, вставка работает на db3
.
Кроме того, я настроил DataSource
для всех трех баз данных.
Я хотел бы добавить, что в трех базах данных есть несколько таблиц с одинаковым именем. По другим причинам я не могу дать вам точное наименование, но я бы, конечно, попробовал любые предложения по именованию. Но я должен сказать, что на всех трех базах данных выбор происходит именно так, как хотелось.
application.properties
server.port=8086
db1.datasource.test-on-borrow=true
db1.datasource.validation-query=SELECT 1
db2.datasource.test-on-borrow=true
db2.datasource.validation-query=SELECT 1
db3.datasource.test-on-borrow=true
db3.datasource.validation-query=SELECT 1
spring.jpa.hibernate.ddl-auto=validate
jwt.header=Authorization
jwt.secret= //mysecret
jwt.expiration=14400
jwt.route.authentication.path=/login
jwt.route.authentication.refresh=/refresh
spring.profiles.active=prod
webapp.cors.allowedOrigins= //list of allowed origins
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
application-prod.properties
server.port=8086
db1.datasource.url= //db1 url
db1.datasource.username= //username
db1.datasource.password= //password
db1.datasource.driverClassName=com.mysql.jdbc.Driver
db1.datasource.test-on-borrow=true
db1.datasource.validation-query=SELECT 1
db2.datasource.url= //db2 url
db2.datasource.username= //username
db2.datasource.password= //password
db2.datasource.driverClassName=com.mysql.jdbc.Driver
db2.datasource.test-on-borrow=true
db2.datasource.validation-query=SELECT 1
db3.datasource.url= //db3 url
db3.datasource.username= //username
db3.datasource.password= //password
db3.datasource.driverClassName=com.mysql.jdbc.Driver
db3.datasource.test-on-borrow=true
db3.datasource.validation-query=SELECT 1
Log
сущность JPA, log
- имя таблицы в базе данных db1
@Entity
@Table(name = "log" , catalog = "db1")
public class Log implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long logID;
private Integer uploadSeq;
private String date;
public Log() {
}
public Log(Integer uploadSeq, String date) {
this.uploadSeq = uploadSeq;
this.date = date;
}
@Column(name = "logID", unique = true, nullable = false)
public Long getLogID() {
return logID;
}
public void setLogID(Long logID) {
this.logID = logID;
}
@Column(name = "uploadSeq", nullable = false)
public Integer getUploadSeq() {
return uploadSeq;
}
public void UploadSeq(Integer uploadSeq) {
this.uploadSeq = uploadSeq;
}
@Column(name = "date", nullable = false)
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
Db1LogRepository
хранилище для log
таблица
public interface Db1LogRepository extends JpaRepository<Log,Long> {
public Log findFirstByOrderByLogIDDesc(); //is being used on another part of the project
}
Db1LogComponent
компонент для доступа к хранилищу
@Component
public class Db1LogComponent {
@Autowired
Db1logRepository db1LogRepository;
public void addDate(Log log) {
System.out.println(db1LogRepository.findAll().size()); //Retrieves the correct entities of the table log in db1
db1LogRepository.save(log); //Doesn't save to the database
}
}
Редактировать: DB3 имеет @Primary
аннотацию в файле конфигурации, в отличие от двух других конфигов о двух других базах данных.