[SPRING] 스프링 데이터 JPA - 계산 된 속성을 정렬 할 수 있습니까?
SPRING스프링 데이터 JPA - 계산 된 속성을 정렬 할 수 있습니까?
다음 엔터티가 있다고 가정합니다.
@Entity
public class Game {
@Id
@GeneratedValue
private Integer id;
private String name;
private Calendar startTime;
private int durationInSeconds;
public GameStatus getStatus() {
if( startTime.after(Calendar.getInstance()))
{
return GameStatus.SCHEDULED;
} else {
Calendar endTime = Calendar.getInstance();
endTime.setTime(startTime.getTime());
endTime.roll(Calendar.SECOND, durationInSeconds);
if( endTime.after(Calendar.getInstance())) {
return GameStatus.OPEN_FOR_PLAY;
}
else {
return GameStatus.FINISHED;
}
}
}
}
내 GameRepository가 PagingAndSortingRepository 인 경우 상태 속성별로 정렬 된 결과 페이지를 어떻게 얻을 수 있습니까?
나는 현재 얻는다 :
java.lang.IllegalArgumentException: Unable to locate Attribute with the the
given name [status] on this ManagedType [org.test.model.Game]
내가 이해할 수있는 것은 실제로 상태가 JPA 속성이 아니기 때문입니다. 이 문제를 해결할 방법이 있습니까?
(나는 Hibernate를 사용하고있다. 그래서 어떤 Hibernate도 특정하다.)
해결법
-
==============================
1.문제는 Spring Data의 PageRequest 정렬이 ORDER BY 절을 형성하여 데이터베이스 계층에서 수행된다는 것입니다.
문제는 Spring Data의 PageRequest 정렬이 ORDER BY 절을 형성하여 데이터베이스 계층에서 수행된다는 것입니다.
@Formula 열을 만들 수 있습니다 (예 :
@Entity public class Game { ... // rewrite your logic here in HQL @Formula("case when startTime >= endTime then 'FINISHED' ... end") private String status;
그런 다음 수식에 쓰는 모든 것이 ORDER BY 절로 전달되므로 정렬 순서로 새 열을 사용할 수 있습니다.
from https://stackoverflow.com/questions/37139985/spring-data-jpa-is-it-possible-to-sort-on-a-calculated-property by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring과 GlassFish 5에서 분산 트랜잭션 XA를 수행하는 방법은 무엇입니까? (0) | 2019.02.20 |
---|---|
[SPRING] Intellij는 스프링 부팅으로 hql을 올바르게 구성하는 방법을 설명합니다. 이제 Persistence QL 쿼리에 오류가 발생합니다. (0) | 2019.02.20 |
[SPRING] POST / PUT 중에 모든 객체에 대한 단일 사용자 정의 디시리얼라이저 또는 해당 객체로 삽입 된 전체 객체 (0) | 2019.02.20 |
[SPRING] @RequestScoped bean의 데이터는 여러 브라우저에서 공유됩니다. (0) | 2019.02.20 |
[SPRING] 봄 데이터의 날짜 별 제한 사항 JPA (0) | 2019.02.20 |