2

次のクエリがあります。

List results = getSession()
                .createCriteria(AppointmentSlot.class)
                .setProjection(
                        Projections.projectionList()
                                .add(Projections.min("startTime"))
                                .add(Projections.max("endTime"))
                                .add(Projections.groupProperty("clinicInfo"))
                                .add(Projections.groupProperty("staffInfo"))
                                .add(Projections.groupProperty("status"))
                                .add(Projections.groupProperty("dayId")))
                .list();

min("startTime")との差を計算する追加のプロパティを選択したいと思いますmax("endTime")

アップデート

startTime列と列の両方のデータベースのサンプル値endTime

  1. 08:00:00、08:15:00
  2. 08:15:00、09:00:00
  3. 09:00:00、09:15:00 ...

Hibernateを使用してこれをどのように可能にしますか?

4

1 に答える 1

2

SQLプロジェクションを試してください。何かのようなもの

List results = getSession()
                .createCriteria(AppointmentSlot.class, "apps")
                .setProjection(
                        Projections.projectionList()
                                .add(Projections.min("startTime").as("minStart"))
                                .add(Projections.max("endTime").as("maxTime"))
                                .add(Projections.groupProperty("clinicInfo"))
                                .add(Projections.groupProperty("staffInfo"))
                                .add(Projections.groupProperty("status"))
                                .add(Projections.groupProperty("dayId")))
                                .add(Projections.sqlProjection("(apps.minStart- apps.maxTime) as duration", new String[]{"duration"}, new org.hibernate.type.DateType[]{new org.hibernate.type.DateType()}),"duration")
                .list();
于 2013-10-10T18:34:53.950 に答える