Я создаю новое приложение Spring Boot 3.14 для себя. У меня есть предыдущее приложение Spring Boot 3.0.5, которое не имеет этой проблемы.@SpringBootApplication
public class JobSearchApplication {
public static void main(String[] args) {
SpringApplication.run(JobSearchApplication.class, args);
}
}
< /code>
Класс Databaseconfiguration выглядит следующим образом: < /p>
package com.tomholmes.product.jobsearch.config;
@Configuration
@EnableAutoConfiguration
@ComponentScan("com.tomholmes.product.jobsearch")
@EntityScan("com.tomholmes.product.jobsearch.model")
@EnableJpaRepositories(basePackages = "com.tomholmes.product.jobsearch.repository")
@EnableTransactionManagement
public class DatabaseConfiguration {
}
< /code>
Моя объекта Hibernate работает нормально, мой код репозитория Hibernate работает нормально, и у меня есть простой тест, который показывает, что подключение к базе данных работает нормально. Позвольте мне показать вам простой тест: < /p>
@AutoConfigureTestDatabase(replace=Replace.NONE)
@DataJpaTest
public class RoleRepositoryTest {
@Autowired
private RoleRepository repository;
@Test
public void testFindById() {
long id = 1;
RoleEntity roleEntity = repository.findById(id).orElse(null);
assertNotNull(roleEntity);
assertEquals(id, roleEntity.getId());
}
}
< /code>
Теперь пришло время реализовать тест кода службы, который у меня есть. И вы заметите, что я использую инъекцию конструктора, так как это стало стандартом. < /P>
@Transactional
@Service("roleService")
public class RoleServiceImpl implements RoleService {
private RoleRepository roleRepository;
public RoleServiceImpl(RoleRepository roleRepository) {
this.roleRepository = roleRepository;
}
@Override
public RoleEntity getById(long id) {
RoleEntity role = roleRepository.findById(id).orElse(null);
return role;
}
}
< /code>
Теперь появляется часть, где тест интеграции для этого должен быть супер-легким, и с моим более старым проектом (Spring Boot 3.0.5) это сработало, но с Spring Boot 3.1.4 что-то изменилось. Итак, вот тест, и тогда я расскажу вам, какое сообщение об ошибке будет. Итак, сначала тестовый код: < /p>
@SpringBootTest(classes = JobSearchApplication.class)
@Transactional
public class RoleServiceTest {
@Autowired
private RoleService service;
@Test
public void testGetById() {
long id = 1;
RoleEntity entity = service.getById(id);
assertNotNull(entity);
assertEquals(id, entity.getId());
}
}
< /code>
Теперь ошибка, которую я получаю, заключается в следующем: < /p>
Caused by: java.sql.SQLSyntaxErrorException: Table 'test.role' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-5.0.1.jar:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) ~[HikariCP-5.0.1.jar:na]
at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:239) ~[hibernate-core-6.2.9.Final.jar:6.2.9.Final]
... 156 common frames omitted
< /code>
Итак, я не понимаю, почему тест ищет таблицу «test.role» вместо «роли». Я посмотрел на более старые проекты, и я сделал некоторый поиск ответа на это, но я не видел никаких идей о том, почему это происходит.@SpringBootTest(classes = JobSearchApplication.class, DatabaseConfiguration.class)
< /code>
И это не работает. Я использую MySQL с последним драйвером, и я хочу использовать реальную базу данных для тестирования моей бизнес -логики.# Spring Boot - Hibernate6 settings
spring.datasource.url=jdbc:mysql://localhost:3306/job_search_db?serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Подробнее здесь: https://stackoverflow.com/questions/772 ... base-table
Spring Boot Service Service не может найти таблицу базы данных ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Java Service Wrapper во время запуска JAR Application FOM Service Service
Anonymous » » в форуме JAVA - 0 Ответы
- 53 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Журналы Spring Boot Docker Service Недоступно от администратора Spring Boot Admin
Anonymous » » в форуме JAVA - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Журналы Spring Boot Docker Service Недоступно от администратора Spring Boot Admin
Anonymous » » в форуме JAVA - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-