Spring Boot Service Service не может найти таблицу базы данныхJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot Service Service не может найти таблицу базы данных

Сообщение Anonymous »

Я создаю новое приложение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Должен быть одним из: service.start_sticky_compatibility, service.start_sticky, service.start_not_sticky, service.start_
    Гость » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Гость
  • Должен быть одним из: service.start_sticky_compatibility, service.start_sticky, service.start_not_sticky, service.start_
    Гость » » в форуме Android
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • 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

Вернуться в «JAVA»