Spring boot JPA resultset повторяет первую строку данных - PullRequest
0 голосов
/ 25 октября 2019

Я использую Spring boot 2 и Hibernate 5 и пытаюсь выбрать данные из объединения двух таблиц. Но возвращенный результат повторяет первую строку данных.

@Autowired
private CaseDTRsServiceImpl caseDTRsService; 

@Test
public void UnitTest_findCaseByStage() {
    Iterable <CaseDTRs> caseDTRsIterable = caseDTRsService.findCaseByStage("Eligibility");

    List <CaseDTRs> CaseDTRsList = StreamSupport
        .stream(caseDTRsIterable.spliterator(), false)
        .collect(Collectors.toList());             

    for (int i=0; i<CaseDTRsList.size(); ++i) {
        System.out.printf("%d-Case Number: %d ", i, CaseDTRsList.get(i).getCaseNum());
        System.out.printf(" TypeCd: %s, getDocNumber:%s\n", CaseDTRsList.get(i).getTypeCd(), CaseDTRsList.get(i).getDocNumber());

    }

}


@Service
public class CaseDTRsServiceImpl implements CaseDTRsService {

@Autowired
private CaseDTRsRepository caseDTRsRepository;

public Iterable<CaseDTRs> findAll() {
    return caseDTRsRepository.findAll(); 
}


public Iterable<CaseDTRs> findCaseByStage(String stage) {

    return caseDTRsRepository.findCaseByStage(stage);
    //return caseDTRsRepository.findCaseByStage();

}

}


@Repository
public interface CaseDTRsRepository extends JpaRepository<CaseDTRs, String> {

@Query(value = "SELECT case_num, TYPE_CD, doc.x_doc_id_num " + 
"FROM siebel.s_case ca, siebel.s_evt_act doc " + 
"where ca.row_id=doc.x_case_id and case_num='10009999' ", nativeQuery = true)

List<CaseDTRs> findCaseByStage(String stage);

}

UnitTest_CaseDTRs> Размер: 75

UnitTest_CaseDTRs> Номер дела: 10009999 0-номер дела: 10009999 TypeCd: Общественный корпус, getDocNumber: 070123

1-Case Number: 10009999 TypeCd: Housing, getDocNumber: 070123

2-номер корпуса: 10009999 TypeCd: Housing, getDocNumber: 070123

....

74-CaseНомер: 10009999 TypeCd: Корпус, getDocNumber: 070123

1 Ответ

0 голосов
/ 25 октября 2019

Измените услугу на

@Service public class CaseDTRsServiceImpl implements CaseDTRsService {

@Autowired
private CaseDTRsRepository caseDTRsRepository;

public Iterable<CaseDTRs> findAll() {
    return caseDTRsRepository.findAll(); 
}


public List<CaseDTRs> findCaseByStage(String stage) {

    return caseDTRsRepository.findCaseByStage(stage);

}
}

Измените код теста на

@Autowired
private CaseDTRsServiceImpl caseDTRsService; 

@Test
public void UnitTest_findCaseByStage() {
    List <CaseDTRs> caseDTRsList = caseDTRsService.findCaseByStage("Eligibility");



    for (int i=0; i<caseDTRsList.size(); i++) {
        System.out.printf("%d-Case Number: %d ", i, CaseDTRsList.get(i).getCaseNum());
        System.out.printf(" TypeCd: %s, getDocNumber:%s\n", CaseDTRsList.get(i).getTypeCd(), CaseDTRsList.get(i).getDocNumber());

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...