Парень с проекцией JPA в Spring Boot возвращает только одну записьJAVA

Программисты JAVA общаются здесь
Anonymous
Парень с проекцией JPA в Spring Boot возвращает только одну запись

Сообщение Anonymous »

Я использую pagination с нативным запросом в одной из моей таблицы SQL, из -за псевдонима в моем запросе я использовал JPA Pocation, сделал интерфейс и получаю поля из моего класса DTO, но когда я нажимаю на него, я получаю только один рекорд вместо того, чтобы получить несколько записей, когда я даю размер более, чем один, приводит к тому, что пустой объект, такой как
, вместо того, чтобы получить несколько записей, когда я даю размер более, чем один, он приводит к тому, что пустой объект, как
, как один, он нажимаю на него, как он нажимает на него.

Код: Выделить всё

`{
"content": [],
"pageable": {
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"offset": 10,
"pageNumber": 1,
"pageSize": 10,
"paged": true,
"unpaged": false
},
"last": true,
"totalPages": 1,
"totalElements": 2,
"size": 10,
"number": 1,
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"numberOfElements": 0,
"first": false,
"empty": true
}`
Но когда я даю size = 1, он возвращает одну запись, когда я использую один и тот же запрос в mysql он работает нормально и возвращает все записи, как и ожидалось. Кто -нибудь может сказать мне, в чем проблема с моим кодом. Мой код указан ниже < /p>
Postman запрос < /p>
Ответ почтальона после того, как я предоставлю size = 1 < /p>
`< /p>

Код: Выделить всё

{
"content": [
{
"channel": "B",
"userName": "asdas",
"primaryKey": "sadasd",
"contactNumber": "asdsa",
"minRequestTime": "2022-12-13 10:36:45.0",
"maxRequestTime": "2022-12-13 10:36:45.0",
"success": "0",
"totalHits": "4",
"failed": "4"
}
],
"pageable": {
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"offset": 1,
"pageSize": 1,
"pageNumber": 1,
"unpaged": false,
"paged": true
},
"totalElements": 3,
"totalPages": 3,
"last": false,
"size": 1,
"number": 1,
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"numberOfElements": 1,
"first": false,
"empty": false
}
< /code>
`< /p>
вот таблица MySQL, она имеет 28 записей < /p>
sql table < /p>
entity < /p>
@Entity
@Table(name = "reporting_general")
@Data
public class ReportingGeneral implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int id;
@Column(name = "transaction_name")
public String transactionName;
public String username;
@Column(name = "contact_number")
public String contactNumber;
public String segment;
@Column(name = "user_type")
public String userType;
@Column(name = "primary_key")
public String primaryKey;
public String channel;
@Column(name = "response_code")
public String ResponseCode;
@Column(name = "request_time")
public Date requestTime;
@Column(name = "response_time")
public Date responseTime;

}
< /code>
Интерфейс, используемый для проекции < /p>
public interface ActiveAccountReport {
String getUserName();
String getContactNumber();
String getPrimaryKey();
String getMinRequestTime();
String getMaxRequestTime();
String getSuccess();
String getFailed();
String getTotalHits();
String getChannel();
}
< /code>
класс репозитория < /p>
@Repository
public interface ReportingGenRepo extends JpaRepository {

@Query(value = "SELECT REPORTING_GENERAL.USERNAME AS userName, " +
"ANY_VALUE (REPORTING_GENERAL.CONTACT_NUMBER ) AS contactNumber,ANY_VALUE (REPORTING_GENERAL.PRIMARY_KEY) AS primaryKey," +
"MIN( REQUEST_TIME ) AS minRequestTime ,MAX( REQUEST_TIME ) AS maxRequestTime, " +
"COUNT(IF ( RESPONSE_CODE = '1', 1, NULL )) AS success,COUNT(IF " +
"( RESPONSE_CODE != '1', 1, NULL )) AS failed,COUNT(*) AS totalHits,CHANNEL as channel" +
" FROM REPORTING_GENERAL WHERE " +
" REPORTING_GENERAL.ID > 0 AND CHANNEL in ?3 AND (REPORTING_GENERAL.REQUEST_TIME  BETWEEN ?1 AND ?2)" +
"GROUP BY channel, username",

countQuery = "SELECT count(*) FROM REPORTING_GENERAL WHERE " +
" REPORTING_GENERAL.ID > 0 AND CHANNEL in ?3 AND (REPORTING_GENERAL.REQUEST_TIME  BETWEEN ?1 AND ?2)" +
"GROUP BY channel, username", nativeQuery = true)
public Page getActiveAccountReportFilters(
LocalDateTime startDate,
LocalDateTime endDate,
List channel,
Pageable pageable);
}
< /code>
Класс службы < /p>
@Service
public class ReportingGenService {
@Autowired
private ReportingGenRepo reportingGenRepo;

public Page  paginatedActiveAccountReports(ActiveAccountRequest activeAccountRequest,
Integer page,Integer size) {

Pageable pageable = PageRequest.of(page,size);
Page activeAccountReports = reportingGenRepo
.getActiveAccountReportFilters(activeAccountRequest.getStartDate(),
activeAccountRequest.getEndDate(),activeAccountRequest.getChannel(),pageable);

return activeAccountReports;
}

}
< /code>
Controller Class < /p>
@RestController
@RequestMapping("/repo")
public class ReportingGenController {
@Autowired
private ReportingGenService reportingGenService;

@GetMapping("/get")
public Page findAll(@RequestBody ActiveAccountRequest activeAccountRequest,
@RequestParam(value = "page",defaultValue = "0") Integer page, @RequestParam(value = "size",defaultValue = "1") Integer size){
return reportingGenService.paginatedActiveAccountReports(activeAccountRequest,page,size);

}
}
может кто -нибудь помочь, пожалуйста

Подробнее здесь: https://stackoverflow.com/questions/750 ... one-record

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