Если PostDetails опциональна, запрос от неё с JOIN FETCH не подходит: запись может отсутствовать, а бизнес-логике нужны только Post и связанный User.
Решение из разбора Vlad Mihalcea: начать JPQL-запрос с Post, присоединить PostDetails по общему идентификатору, затем User и вернуть обе сущности через конструктор Java Record. Если промежуточной записи нет, поле пользователя будет
null.Hibernate добавляет выбранные сущности в текущий контекст персистентности. Изменение Post поэтому превращается в UPDATE при
flush(). Такой приём позволяет не добавлять обратную связь @OneToOne или @OneToMany в родительскую сущность только ради чтения.
