*****************************
File Main
*****************************
for (theUser in userService.getUsersByClassification("Class 1", pageNr = 0, pageSize = 10)) {
println(theUser.displayName)
}
*****************************
File UserService
*****************************
@Service
class UserService @Autowired constructor(private val userPaging: UserPagingAndSortingRepository) {
fun getUsersByClassification(classification: String, pageNr: Int, pageSize: Int): Page<User> {
val pageable: Pageable = PageRequest.of(pageNr, pageSize)
return userPaging.findByClassification(classificatie, pageable)
}
}
*****************************
File UserPagingAndSortingRepository
The Query annotation is JPQL, but in the case of JPA Hibernate, can also be HQL.
*****************************
interface UserPagingAndSortingRepository : PagingAndSortingRepository<User, Long> {
@Query("SELECT u FROM User u JOIN u.userExtradata um WHERE um.classification = :classification")
fun findByClassification(@Param("classification") classification: String, pageable: Pageable): Page<User>
}
*****************************
File entity.User
*****************************
@Entity
@Table(name = "\"user\"")
class User {
@Id
var id: Long = 0;
@Column (name="display_name")
var displayName: String = ""
@OneToOne(mappedBy = "user", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
val userExtradata: UserExtradata? = null
}
*****************************
File entity.UserExtradata
*****************************
@Entity
@Table(name = "\"user_extradata\"")
class UserExtradata {
@Id
var user_id: Long = 0;
var classification: String = ""
var phonenumber: String? = ""
@OneToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
val user: User? = null
}
woensdag 29 januari 2025
Easy pagination with Spring JPA - Hibernate
Abonneren op:
Reacties posten (Atom)
Geen opmerkingen:
Een reactie posten