N+1 Проблема при попытке получить полную сущность в DTOJAVA

Программисты JAVA общаются здесь
Anonymous
N+1 Проблема при попытке получить полную сущность в DTO

Сообщение Anonymous »

Использование Hibernate 5.6 здесь, и у меня есть две основные объекты ... < /p>
@Entity
class MyEntity {
@Id
private long id;
private String name;
@OneToOne
@JoinColumn(name = "subEntity_id")
private SubEntity subEntity;
//...
}

@Entity
class SubEntity{
@Id
private long id;
private String someField;
}
< /code>
Теперь, когда я пытаюсь следить за запросом, все работает нормально ... < /p>
"SELECT new SomeDto( e.name, e.subEntity.someField )
FROM MyEntity e
WHERE e.id IN :someIds"
< /code>
Это, скорее всего, приводит к одному запросу, загружая все данные для всех Myentity в Anyedto объекты."SELECT new SomeDto( e.name, e.subEntity )
FROM MyEntity e
WHERE e.id IN :someIds"
< /code>
Все это внезапно становится проблемой n+1, поскольку я получаю один запрос, загружающий объекты Myentity, а затем один дополнительный запрос для каждого из них, загружая субстантность (который на самом деле должен быть уже содержаться в результате запроса). < /p>
Основная проблема - это, конечно, в подпоставлении, в действительности, больше, Field. Я, конечно, мог создать конструктор в DTO, чтобы получить все поля, но это кажется несколько глупым и приведет к уродливым коде. Итак, есть ли простой способ получить полную подчиненность с одним запросом на все?

Подробнее здесь: https://stackoverflow.com/questions/796 ... into-a-dto

Вернуться в «JAVA»