Spring BootのJpaRepositoryで取得するカラムを制限する



@Entity
data class User(
  var id: Long,
  var name: String?,
  var age: Int,
  ...
)

class UserSummary(var id:Long, var name:String?)

interface UserRepository : JpaRepository<User, Long> {
  fun findOneById(id: Long): User?
  fun <VIEW> findOneById(id: Long, type: Class<VIEW>): VIEW?
  fun <VIEW> findByIdIn(ids: List<Long>, type: Class<VIEW>): List<VIEW>

  // @Queryを使うと、typeを渡してもselectするcolumnを絞ることができなかった
  // @Query("from org.example.User where id in :ids")
  // fun <VIEW>findByIds(@Param("ids") ids: List<Long>, type:Class<VIEW>): List<VIEW>
}

...

fun procSomething() {
  val user = userRepository.findOneById(ar, UserSummary::class.java)
  val users = userRepository.findByIdIn(ar, UserSummary::class.java)
}

See also