Собственный SQL-запрос, который мы хотим отобразить в JPA, похож на следующий:
SELECT * FROM PARTNER where PARTNER_NUMBER IN ('id1', 'idn').
С помощью JPA вы можете использовать TypedQuery
например, и установите ожидаемый список В предложении
непосредственно в качестве параметра запроса
@Stateless public class PartnerDataRepository { @Inject private EntityManager em; public ListfindPartnerDataFromList( List partnerNumbers) { TypedQuery query = em.createNamedQuery( PartnerData.FIND_PARTNER_DATA_IN_LIST, PartnerData.class); query.setParameter(PartnerData.PARTNER_NUMBERS, partnerNumbers); return query.getResultList(); } }
В самом именованном запросе вы можете передать параметр с помощью :
, как при установке “обычного” параметра:
@Entity @Access(AccessType.FIELD) @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Table(name = PartnerData.TABLE_NAME) @NamedQueries({ @NamedQuery( name = PartnerData.FIND_PARTNER_DATA_IN_LIST, query = "select m from PartnerData m where partnerNumber in :partnerNumbers") }) public class PartnerData { public static final String TABLE_NAME = "PARTNER"; public static final String PARTNER_NUMBERS = "partnerNumbers"; public static final String FIND_PARTNER_DATA_IN_LIST = "findPartnerDataWithPartnerNumbers"; //... rest ignored for brevity }
Поделился ❤️ с Codever . 👉 используйте функцию копировать в мой , чтобы добавить его в свою личную коллекцию фрагментов.
Оригинал: “https://dev.to/codever/sql-select-with-in-clause-from-list-with-jpa-1g41”