У меня:
Код: Выделить всё
@Entity
@Data
@EqualsAndHashCode(callSuper = true)
public class AlertMessage extends BasicEntityAuto {
private String nickname;
private AlertType alertType;
...
@CreationTimestamp
@Temporary(TemporalType.TIMESTAMP)
private Date CreatedDate;
}
в pom есть зависимости:
Код: Выделить всё
org.springframework.boot
spring-boot-starter-data-jpa
3.2.6
org.hibernate.orm
hibernate-core
7.0.0.Beta1
в свойстве:
Код: Выделить всё
server.port=8108
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
spring.jpa.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.master.jdbcurl=jdbc:mariadb://127.0.0.1:3309/test
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.master.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.slave1.jdbcurl=jdbc:mariadb://127.0.0.1:3310/test
spring.datasource.slave1.username=root
spring.datasource.slave1.password=root
spring.datasource.slave1.driver-class-name=org.mariadb.jdbc.Driver`
Код: Выделить всё
services:
master:
restart: always
image: mariadb:latest
container_name: mariadb_master
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
MYSQL_USER: root
MYSQL_PASSWORD: root
volumes:
- ./master-data:/var/lib/mysql
- ./master-conf:/etc/mysql/conf.d
ports:
- "3309:3306"
command: >
--server-id=1
--log-bin=mysql-bin
--binlog-do-db=test
--binlog-format=ROW
slave:
restart: always
image: mariadb:latest
container_name: mariadb_slave
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./slave-data:/var/lib/mysql
- ./slave-conf:/etc/mysql/conf.d
- ./script:/scripts
ports:
- "3310:3306"
depends_on:
- master
command: >
--server-id=2
--relay-log=relay-bin
--log-bin=mysql-bin
--skip-slave-start=0
--scripts/script.sh`
почему поиск осуществляется в таблице AlertMessage вместо alert_message?
каких настроек мне не хватает для преобразования CamelCase в Snake_case?
указав @Table( name="alert_message") не является вариантом. кроме того, я не хочу писать свой собственный класс преобразования (например: SnakeCaseNamingStrategy реализует PhysicalNamingStrategy).
эта проблема возникает с подчиненным устройством. потому что если я добавлю флаг "--lower_case_table_names=1" в подчиненный докер в команде, то таблицы начнут искаться уже как 'test.alertmessage'.
как еще указать имя конкретно для слейва?
если указать @Table(name="alert_message") или написать собственный конвертер, то все работает, но хотелось бы найти более простой способ.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -principle