레이블이 spring data jpa인 게시물을 표시합니다. 모든 게시물 표시
레이블이 spring data jpa인 게시물을 표시합니다. 모든 게시물 표시

2017년 6월 8일 목요일

pageImpl 로 반환된 json 타입 restTemplate 호출하기

data jpa를 쓰는 경우 응답 처리의 paging 처리를 하기 위해 pageImpl로 반환하는 경우가 많다.
이 결과를 restTemplate으로 호출하는 경우 pageImpl 으로 반환하는 방법은 다음과 같다.
pageImpl을 재선언하여 restTemplate 호출을 받을 수 있는 class를 만든다.
아래는 단순 map 형태로 반환 받는 pageImpl의 구현 예이다.
@JsonIgnoreProperties(ignoreUnknown = true)
public class RestPageImpl extends PageImpl<Map<?, ?>> {
 private static final long serialVersionUID = 1L;

 @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
 public RestPageImpl(@JsonProperty("content") List<Map<?, ?>> content, @JsonProperty("number") int page,
   @JsonProperty("size") int size, @JsonProperty("totalElements") long total) {
  super(content, new PageRequest(page, size), total);
 }

 public RestPageImpl(List<Map<?, ?>> content, Pageable pageable, long total) {
  super(content, pageable, total);
 }

 public RestPageImpl(List> content) {
  super(content);
 }

 @SuppressWarnings("unchecked")
 public RestPageImpl() {
  super(Collections.EMPTY_LIST);
 }
}

2016년 9월 30일 금요일

Spring Boot 1.4.1-RELEASE에서 spring-data-jpa의 auditing 이 동작하지 않는 문제 발생

https://github.com/spring-projects/spring-boot/issues/6983

현재 Spring Boot 1.4.1-RELEASE를 사용하면 spring-data-jpa의 @CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy 같은 auditing 처리가 제대로 동작하지 않는 문제가 있다.
orm.xml을 로드하는 boot의 JpaBaseConfiguration 설정에 버그가 있다.

임시 해결책으로 아래의 빈을 선언해서 쓰는 방법이 있다.


@Bean
public EntityManagerFactoryBuilder entityManagerFactoryBuilder(JpaProperties properties, JpaVendorAdapter jpaVendorAdapter, ObjectProvider persistenceUnitManagerProvider) {
 return new EntityManagerFactoryBuilder(jpaVendorAdapter, properties.getProperties(), persistenceUnitManagerProvider.getIfAvailable(), null);
}

1.4.2 가 나오기 전까진 당분간 저 선언을 유지해야 한다.




1.4.2-RELEASE가 나온 이후 해당 버그는 수정되었다.

Spring Boot 1.4.2-RELEASE