코틀린 data class 코틀린의 data class는 아래처럼 생성자에 필드를 선언하는 식으로 작성하며, 파라미터가 없는 기본 생성자는 존재하지 않습니다. data class EmployeeCreateRequest( val departmentId: UUID, val jobType: String, val name: String, val email: String // ... ) 문제는 Jackson 라이브러리에서 default 생성자가 없는 클래스로 deserialize를 수행하면 아래처럼 에러 문구가 출력됩니다. (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or propert..
kotlin 검색 결과
kotlin에서는 java void 타입과 동일한 타입으로 Unit을 도입하였습니다. 물론 kotlin native로는 오직 하나의 값을 가지는 것 또한 Unit으로 칭합니다. 아래는 Kotlin 레퍼런스 문서의 설명입니다. Unit Unit은 "함수가 리턴은 하지만 그 결과값이 무의미하다"라는 의미입니다. object Unit For Common, JVM, JS The type with only one value: the Unit object. This type corresponds to the void type in Java. For Native The type with only one value: the Unit object. Nothing 반면 Nothing은 함수가 리턴 자체를 하지 않는다를 의..
Kotlin의 모든 class는 기본적으로 final이기 때문에 JPA Lazy Proxy가 적용되지 않습니다. JPA Lazy Proxy를 이용하기 위해 kotlin-allopen compiler plugin 의존성을 추가해주고 JPA Entity에 allOpen 설정을 명시해줘야 합니다. gradle 예시 buildscript { // ... // dependencies { classpath group: 'org.jetbrains.kotlin', name: 'kotlin-allopen', version: "$kotlinVersion" } } allOpen { annotation "javax.persistence.Entity" }
JPA paging을 할 때는 COUNT()에 fetch될 항목까지 들어가면 위의 QueryException이 발생합니다. 잘못된 예 @Query(value = """ SELECT p FROM Post p INNER JOIN FETCH p.writerUser """ ) fun findWithWriterUser(pageable: Pageable): Page 올바로 동작하는 예 @Query( value = """ SELECT p FROM Post p INNER JOIN FETCH p.writerUser wu """, countQuery = """ SELECT COUNT(p) FROM Post p INNER JOIN p.writerUser wu """ ) fun findWithWriterUser(pageabl..