Я пытаюсь настроить новый проект на основе работающего существующего проекта. Я не смог получить подключение к базе данных для работы через JDBC. Я не получаю никаких ошибок, просто пустой результат списка. Я знаю, что в настройке базы данных есть что -то шаткое, потому что я получал ошибку, что боб для названного параметра -дюймптата не была найдена. В предыдущем проекте я определил информацию об подключении к базе данных в приложении-default.properties, что было достаточно, чтобы позволить Spring забрать и использовать. Тем не менее, чтобы решить проблему, я добавил боб в файл веб -службы/конфигурации. Это решило эту проблему, позволяя базе данных, по крайней мере, подключаться. Я знаю, что подключение работает, потому что, если я намеренно ошибаюсь с именем таблицы/столбца, я получаю ошибку SQL, что она не может найти таблицу. Поскольку он находит таблицу, я не могу понять, что предотвращает возвращение данных. Я не только не могу определить базу данных в приложении.@Slf4j
@Repository
public class TestRepository {
private final String FIND_ALL_QUERY =
"SELECT " +
" test.ids AS id, " +
" test.value AS value " +
"FROM test_table test ";
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
private DataSource dataSource;
@Transactional
public List findAll() {
log.info("running query...");
return this.namedParameterJdbcTemplate.query(FIND_ALL_QUERY, BeanPropertyRowMapper.newInstance(TestDto.class));
}
}
< /code>
Веб -безопасность: < /p>
@Slf4j
@PropertySource("classpath:application.properties")
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
log.info("In securityFilterChain");
http.csrf().disable().authorizeHttpRequests().anyRequest().permitAll();
return http.build();
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("oracle.jdbc.OracleDriver");
ds.setUrl("jdbc:oracle:thin:@localhost:1521");
ds.setUsername("c##redacted");
ds.setPassword("redacted");
return ds;
}
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(dataSource());
}
}
< /code>
application.properties:
spring.datasource.url=jdbc:oracle:thin:@localhost:1521
spring.datasource.username=c##redacted
spring.datasource.password=redacted
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.hikari.maxLifetime=60000
< /code>
Реализация службы: < /p>
@Slf4j
@RequiredArgsConstructor
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TestRepository testRepository;
public List findAll() {
List test = testRepository.findAll();
log.info("test.size(): ", test.size());
log.info("test.get(0): ", test.get(0));
return test;
}
}
Таблица базы данных:
output:
2025-05-24 13:16:05 INFO campaign.controller.TestController - findingAll...
2025-05-24 13:16:05 INFO campaign.repository.TestRepository - running query...
2025-05-24 13:16:05 INFO c.serviceimpl.TestServiceImpl - test.size():
2025-05-24 13:16:05 INFO c.serviceimpl.TestServiceImpl - test.get(0):
< /code>
Редактировать: это все еще может быть проблемой с CORS. Я не знаю, как дана реконфигурация, которую я сделал в веб -сайте, чтобы удалить все, что связано с аутентификацией и CORS. Тем не менее, я получаю эту ошибку в веб -консоли: < /p>
Access to XMLHttpRequest at 'http://127.0.0.1:8080/archlands/api/test/value' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
< /code>
testdto (совместно с помощью запроса из комментария): < /p>
@Data
@ToString
@RequiredArgsConstructor
@AllArgsConstructor
@Entity
public class TestDto {
private Long id;
private String value;
@Override
public boolean equals(Object checkObject) {
Boolean usersAreEqual = false;
if (this == checkObject) {
usersAreEqual = true;
} else if (checkObject == null || Hibernate.getClass(this) != Hibernate.getClass(checkObject)) {
usersAreEqual = false;
} else { // correct type, check values
TestDto checkUser = (TestDto) checkObject;
if (id != null) {
usersAreEqual = Objects.equals(id, checkUser.id);
}
}
return usersAreEqual;
}
@Override
public int hashCode() {
return getClass().hashCode();
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -retrieval
CORs предотвращает доступ к доступу и поиску данных ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка AUTR0, доступ к доступу, проверьте, что необходимые разрешения предоставляются
Anonymous » » в форуме Android - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-