Код на котлине:
@Entity data class Page(
val name: String,
@OneToMany val category: Category,
@Id @GeneratedValue val id: Int = -1
)
@Entity data class Category(
val name: String,
@Id @GeneratedValue val id: Int = -1
)
@RepositoryRestResource(collectionResourceRel = "pages", path="pages")
interface PageRepository : PagingAndSortingRepository<Page, Int>
При запросе "GET /pages/1" возвращает json с тремя полями: name, id(exposeIdsFor используется) и _links. В базе при "ddl-auto=create" используется поле category_id для данной связи. Как вывести это поле рядом с name и id при запросе? Что-нибудь типа "exposeIdsFor" только для связей, а еще лучше вычисляемое поле, как в projection через @Value
Пробовал использовать projection, но как я понял она работает только при тех запросах, где _embedded возвращается(т.е. не при GET_ONE). Да и все равно костыль получается, писать интерфейс с дублированием всех полей из Entity ради добавления одного поля как-то не очень привлекательно звучит, но если это единственный вариант, то почему бы и нет. Может есть способ, как projection распространить на GET_ONE и остальные запросы без _embedded?
@Value("#{target.category?.id}")
fun getCategoryId(): Int