Рубрики
Без рубрики

SQL Выберите с помощью предложения IN из списка с помощью JPA

Собственный SQL-запрос, который мы хотим сопоставить в JPA, похож на следующий: ВЫБЕРИТЕ * У ПАРТНЕРА… С тегами java, jpa, обложка, фрагменты.

Собственный SQL-запрос, который мы хотим отобразить в JPA, похож на следующий:

SELECT * FROM PARTNER where PARTNER_NUMBER IN ('id1', 'idn').

С помощью JPA вы можете использовать TypedQuery например, и установите ожидаемый список В предложении непосредственно в качестве параметра запроса

@Stateless
public class PartnerDataRepository {

    @Inject private EntityManager em;

    public List findPartnerDataFromList(
        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”