Начинаю изучать java. Подскажите, т.к. уже облазил кучу статей, а решения так и не нашел. Ощущение, что начинаю все больше и больше запутываться.
Есть следующий класс:
@Entity
@Table(name = "CalendarResPlan")
public class CalendarResPlanSet implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "day")
@Temporal(value=TemporalType.DATE)
private Date day;
@Column(name = "idRes")
private String idRes;
@Column(name = "needTime")
private Long needTime;
@Column(name = "idOperation")
private String idOperation;
Делаю выборку следующим образом:
Query query = session.createQuery("SELECT "
+ "SUM(R.needTime), "
+ "R.day, "
+ "R.idRes "
+ "FROM "
+ "CalendarResPlanSet R "
+ "WHERE R.day = :day "
+ "AND R.idRes = :idRes "
+ "GROUP BY "
+ "R.day, "
+ "R.idRes");
query.setParameter("day", day);
query.setParameter("idRes", idRes);
CalendarResPlanSet planSet = (CalendarResPlanSet) query.uniqueResult();
Преобразование не получается. Выдает следующее сообщение: cannot be cast to base.dataSets.CalendarResPlanSet
Если вы хотите использовать агрегатные функции в HQL/JPQL, то у вас есть два варианта получения результатов:
Получения списка массивов объектов - List<Object[]>
. Элемент списка - это строка, элемент массива - поле в строке:
Query query = session.createQuery("SELECT "
+ "SUM(R.needTime), "
+ "R.day, "
+ "R.idRes "
+ "FROM "
+ "CalendarResPlanSet R "
+ "WHERE R.day = :day "
+ "AND R.idRes = :idRes "
+ "GROUP BY "
+ "R.day, "
+ "R.idRes");
query.setParameter("day", day);
query.setParameter("idRes", idRes);
List<Object[]> data = query.list();
if (data.size() > 0) {
Long needTimeSum = data.get(0)[0];
...
}
Создание объектов в запросе:
@Entity
public class CalendarResPlanSet {
...
public CalendarResPlanSet(Date day, String idRes, Long needTime) {
this.day = day;
this.idRes = idRes;
this.needTime = needTime;
}
...
}
Query query = session.createQuery("SELECT "
+ "new CalendarResPlanSet("
+ "R.day, "
+ "R.idRes, "
+ "SUM(R.needTime)"
+ ") "
+ "FROM "
+ "CalendarResPlanSet R "
+ "WHERE R.day = :day "
+ "AND R.idRes = :idRes "
+ "GROUP BY "
+ "R.day, "
+ "R.idRes");
query.setParameter("day", day);
query.setParameter("idRes", idRes);
CalendarResPlanSet calResPlanSet = (CalendarResPlanSet) query.uniqueResult();
Только учтите, что полученная сущность будет в состоянии transient и инициализирована не полностью.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Знакомлюсь с графическим интерфейсом Java SwingПоявилась такая проблема: при нажатии на кнопку должен создаваться файл на диске, а он создается...
Здравствуйте! Есть такой вот вопрос - нужно ли всегда поверять аргументы на null? наподобие:
Требуется скопировать небольшую функцию с Java (Android Studio) на Delphi, для этого необходимо функцию эту переделать немного так как синтаксис отличаетсяСтолкнулся...