Если вы хотите создать собственный запрос для этого, это больше о том, как решить это в SQL. Вы не говорите SELECT *
, что означает все столбцы. Вам нужно будет сказать SELECT your_column_name
, чтобы выбрать только определенный столбец.
Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee");
List<String> em1 = q1.getResultList();
Предложение WHERE
может и должно быть определено с привязкой параметров JPA. Есть несколько преимуществ, касающихся производительности и внедрения SQL.
Привязка именованных параметров является особой для поставщика сохраняемости (например, Hibernate). Обычный способ для JPA - использовать ?
, чтобы ваш код был переносимым на других провайдеров.
Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee b WHERE b.booking_id = ?");
q1.setParameter(1, id);
List<String> em1 = q1.getResultList();
Собственные запросы предоставляют возможность использовать оригинальный SQL. Таким образом, некоторые функции, которые являются специфическими для вашей базы данных, могут быть использованы с этим. Тем не менее, если у вас нет очень специфического кода SQL, вам также следует взглянуть на JPQL, конкретный язык запросов JPA и API критериев JPA, который дает преимущества, когда вы хотите реорганизовать свой код, показывает ошибки во время компиляции иоблегчает динамическое создание запросов.