I am trying to query a table where all of my results can be initially ordered by date:
@Entity
class SomeEntity(
@Id @GeneratedValue
var id: Long? = null,
var name: String? = null,
var createdAt: Timestamp? = null,
)
//SomeEntityCriteria.kt
@Repository
class SomeEntityCriteria {
@PersistenceContext
lateinit var entityManager: EntityManager
fun findFilterPageable(page: Int, size: Int, orderByDate: Boolean): Page<SomeEntity> {
val cb = entityManager.criteriaBuilder
val q = cb.createQuery(SomeEntity::class.java)
val someEntity = q.from(SomeEntity::class.java)
val predicates: MutableList<Predicate> = mutableListOf()
val sequence: Path<Set<String>> = someEntity.get(SomeEntity_.ID)
//Here im suppossed to do something with someEnity.createdAt
q.select(someEntity).where(
*predicates.toTypedArray()
).orderBy(cb.desc(sequence))
//CriteriaTool.page does returns PageImpl from a entityManager.createdQuery, so i assume this here is not relevant for the question.
return CriteriaTool.page(entityManager, q, page, size)
}
}
Theres not much else to add, i have done some criteria builder queries before but this is the first time im working with dates. Its important to note that i am interested in implementing it in criteria builder cause i want to filter per pages, please refrain from answer with JpaRepository name based methods.
Thanks for the help.