Я перехожу на
Java/Spring из другого стека разработки, и меня очень смущает то, как в
Spring выполняются некоторые вещи. И я очень удивлен, что не могу найти решение моей конкретной проблемы.
Рассмотрим следующую структуру кода:
Код: Выделить всё
@Entity
class Parent {
}
@Entity
class Child {
private String name;
@ManyToOne
private Parent parent;
}
В моем контроллере API я хочу ответить дочерним списком. Каждый дочерний элемент должен включать несколько дочерних полей (например, имя) и родительский идентификатор (и никаких других родительских данных):
Код: Выделить всё
// JSON Response example
{
"children": [
{
"name": "Child 1",
"parent_id": 1
},
{
"name": "Child 2",
"parent_id": 2
}
]
}
Чтобы предоставить значение Parent_id,
Spring+Hibernate+JPA позволяет мне получить доступ к родительскому идентификатору следующим образом:
р>
Это не только приводит к ненужной выборке всей родительской записи со всеми ее полями из БД, но также вызывает проблему
N + 1 в моем случае, если не используются какие-либо подходы JOIN FETCH или EAGER LOAD.
Но родительский_id — это простой дочерний столбец.
Он должен быть доступен для бесплатно, даже если ассоциация не была загружен!
Есть ли какой-нибудь оптимальный способ достижения моей цели?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... ted-record