Creating a relation to another resource
How to create a mapper
class Meeting {
...
@ManyToOne
@JoinColumn(name="document_id", nullable=false)
lateinit var document: JsonSchemaDocument
...
}
class MeetingDocumentMapper() : AuthorizationEntityMapper<Meeting, JsonSchemaDocument> {
override fun mapRelated(entity: Meeting): List<JsonSchemaDocument> {
// since meeting has a direct relation to document, we can directly return
return listOf(entity.document)
}
override fun mapQuery(
root: Root<Meeting>,
query: CriteriaQuery<*>,
criteriaBuilder: CriteriaBuilder
): AuthorizationEntityMapperResult<JsonSchemaDocument> {
val documentRoot = query.from(JsonSchemaDocument::class.java)
return AuthorizationEntityMapperResult(
documentRoot,
query,
criteriaBuilder.equal(root.get<Meeting>("document"), documentRoot.get<JsonSchemaDocumentId>("id").get<UUID>("id"))
)
}
override fun supports(fromClass: Class<*>, toClass: Class<*>): Boolean {
// this mapper is only used to map from Meeting to JsonSchemaDocument
return fromClass == Meeting::class.java && toClass == JsonSchemaDocument::class.java
}
}How to configure conditions for a related resource
Last updated