Я пытаюсь настроить API Spring Rest, используя спящий режим, Oracle SQL. При попытке использовать настроенный мной собственный репозиторий я получаю следующую ошибку:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dtTkcDailyController': Unsatisfied dependency expressed through field 'dtTkcService': Error creating bean with name 'dtTkcService': Unsatisfied dependency expressed through field 'dtTkcDailyBranchRepo': Error creating bean with name 'dtTkcDailyBranchRepo' defined in com.oracleConnect.authapi.repositories.dtTkcDailyBranchRepo defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List com.oracleConnect.authapi.repositories.dtTkcDailyBranchRepo.findBranchSumDate(java.time.LocalDate); Reason: Failed to create query for method public abstract java.util.List com.oracleConnect.authapi.repositories.dtTkcDailyBranchRepo.findBranchSumDate(java.time.LocalDate); No property 'findBranchSumDate' found for type 'dtTkcDailyByBranch'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) ~[spring-beans-6.1.13.jar:6.1.13]
Вот мой сервис:
package com.oracleConnect.authapi.services;
import com.oracleConnect.authapi.entities.dtTkcDailyByBranch;
import com.oracleConnect.authapi.entities.dtTkcDailybyDistrict;
import com.oracleConnect.authapi.repositories.DtTkcDailyBranchCustom;
import com.oracleConnect.authapi.repositories.dtTkcDailyBranchRepo;
import com.oracleConnect.authapi.repositories.dtTkcDailyRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
@Service
public class dtTkcService {
@Autowired
private dtTkcDailyRepository dtTkcDailyRepository;
@Autowired
private dtTkcDailyBranchRepo dtTkcDailyBranchRepo;
public List\ getDtTkcBySumDate(LocalDate sumDate){
return dtTkcDailyRepository.findBySumDate(sumDate);
}
public List\ getBranchBySumDate(LocalDate sumDate){
return dtTkcDailyBranchRepo.findBranchSumDate(sumDate);
}
public List findDtTkcDailyBranchData(String sumDate, String networkId, String branchName, String linhVuc, String[] cap2Sum, int center) {
return dtTkcDailyBranchRepo.findDtTkcDailyBranchDataByParams(sumDate, networkId, branchName, linhVuc, cap2Sum, center);
}
}
Контроллер:
package com.oracleConnect.authapi.controllers;import com.oracleConnect.authapi.entities.dtTkcDailyByBranch;import com.oracleConnect.authapi.entities.dtTkcDailybyDistrict;import com.oracleConnect.authapi.services.dtTkcService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.time.format.DateTimeParseException;import java.util.List;
@RestController@RequestMapping(path = "/record")public class dtTkcDailyController {
@Autowired
private dtTkcService dtTkcService;
@GetMapping("/dt-tkc/date-by-branch")
public ResponseEntity
findDtTkcDailyBranchData(@RequestParam String date,
@RequestParam(required = false) String networkId,
@RequestParam(required = false) String branchName,
@RequestParam(required = false) String linhVuc,
@RequestParam(required = false) String[] cap2Sum,
@RequestParam(required = false) int center) {
//List dateRecords = dtTkcService.getDtTkcBySumDate(sumDate);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
try {
// Kiểm tra xem date có đúng định dạng hay không
LocalDate sumDate = LocalDate.parse(date, formatter);
// Gọi service để lấy dữ liệu
List dateRecords = dtTkcService.getBranchBySumDate(sumDate);
return new ResponseEntity(dateRecords, HttpStatus.OK);
} catch (DateTimeParseException e) {
// Trả về lỗi nếu ngày không đúng định dạng
String errorMessage = "Ngày nhập không đúng định dạng dd/MM/yyyy. Vui lòng thử lại.";
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMessage);
}
}}
Мой собственный репозиторий
package com.oracleConnect.authapi.repositories;
import java.util.List
public interface DtTkcDailyBranchCustom {
List findDtTkcDailyBranchDataByParams(String sumDate, String networkId, String branchName, String linhVuc, String[] cap2Sum, int center);
}
Что я упустил при настройке? Из всех руководств, которые я просматривал в Интернете, @Autowired/@Repository должно работать здесь
Изменить:
DtTkcDailyByBranch Сущность
package com.oracleConnect.authapi.entities;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import java.time.LocalDate;
@Entity
public class dtTkcDailyByBranch {
@Id
private Long id;
private String tenChiNhanh;
@JsonFormat(pattern="dd/MM/yyyy")
private LocalDate ngayThang;
private Double dtTkc;
// Getters, Setters
}
dtTkcDailyBranchRepo содержит
метод/запрос findBranchSumDate
package com.oracleConnect.authapi.repositories;
import com.oracleConnect.authapi.entities.dtTkcDailyByBranch;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.time.LocalDate;
import java.util.List;
@Repository
public interface dtTkcDailyBranchRepo extends JpaRepository{
//enter date
//receive dt_tkc của branch
@Query(value = """
SELECT
ROW_NUMBER() OVER (ORDER BY a.sum_date DESC,a2. branch_name ASC, SUM(a.total_credit) / 1000000 DESC) AS id,
SUM(a.total_credit) / 1000000 AS dtTkc,
a2. branch_name AS tenChiNhanh,
a.sum_date AS ngayThang
FROM
DTTKC_DAILY a,
dm_tree_list b,
dm_area a1,
area_list a2
WHERE
TRUNC(a.sum_date) = :sumDate
AND a.tree_id = b.tree_id
AND TRUNC(a.sum_date) = TRUNC(b.sum_date)
AND b.linh_vuc = 'S'
AND a.active_year = 'N'
AND a.is_corporate = '1'
AND b.cap2_sum IN ('D', 'G', 'K', 'R', 'T')
AND a.network_id = '1'
AND a.district_number = a1.district_number
AND a1.center = '1'
AND a1.province_code || a1.district_code = a2.district_code
GROUP BY
a2. branch_name, a.sum_date
ORDER BY
a.sum_date DESC, id DESC
""", nativeQuery = true)
List findBranchSumDate(@Param("sumDate") LocalDate sumDate);
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ressed-thr
Как исправить: Ошибка создания компонента с именем: Неудовлетворительная зависимость, выраженная через поле: Ошибка созд ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение