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

Как выполнить сравнение предложения Select с LocalDateTime в JPA

Собственный SQL-запрос, который мы хотим сопоставить в JPA, аналогичен следующему: выберите * из… Помеченный java, jpa, sql, кодом когда-либо.

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

select *
from PARTNER
where EVENT_TIMESTAMP >= timestamp '2021-09-17 10:00:00'
  and EVENT_TIMESTAMP < timestamp '2021-09-17 11:00:00'

где две временные метки должны быть в качестве параметров запроса.

С помощью JPA вы можете использовать Типизированный запрос например, и установите значения LocalDateTime для параметров запроса с помощью метода setParameter :

@Stateless
public class PartnerDataRepository {

    @Inject private EntityManager em;

    public List findPartnerDataWithinInterval(
      LocalDateTime fromDatetime, LocalDateTime toDatetime) {
        TypedQuery query =
            em.createNamedQuery(
                PartnerData.FIND_PARTNER_DATA_IN_TIME_INTERVAL, PartnerData.class);

        query.setParameter(PartnerData.FROM_DATETIME, fromDatetime);
        query.setParameter(PartnerData.TO_DATETIME, toDatetime);

        return query.getResultList();
    }
}

В самом именованном запросе вы можете напрямую передать параметры перед : , как обычно, а реализация (в моем случае Hibernate) позаботится обо всем остальном:

@Entity
@Access(AccessType.FIELD)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = PartnerData.TABLE_NAME)
@NamedQueries({
 @NamedQuery(
      name = PartnerKerndaten.FIND_PARTNER_DATA_IN_TIME_INTERVAL,
      query = "select m from PartnerData m where eventTimestamp >= :fromDatetime and eventTimestamp < :toDatetime")
})
public class PartnerData {
  public static final String TABLE_NAME = "PARTNER";

  public static final String FROM_DATETIME = "fromDatetime";
  public static final String TO_DATETIME = "toDatetime";

  public static final String FIND_PARTNER_DATA_IN_TIME_INTERVAL =
      "findPartnerDataWithinInterval";

  //... rest ignored for brevity
}

Поделился ❤️ с Кодевер . 👉 используйте функцию копировать в мой , чтобы добавить ее в свою личную коллекцию фрагментов.

Оригинал: “https://dev.to/codever/how-to-do-a-select-clause-comparison-of-localdatetime-in-jpa-egm”