Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate, помогите составить Criteria. 
:(
    Опции темы
unkis
  Дата 15.5.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Ребята есть такой sql запрос
Код

SELECT count(*) as anzahl, DATE_FORMAT(timeStamp,'%m.%Y') FROM state s
group by DATE_FORMAT(timeStamp,'%m.%Y')
order by timeStamp asc


в результате получаем вот такой вот вид
>>>>>>



timeStamo это колонка в Таблицы State у которой type timestamp.

Используется база MySQL

Как мне его обыграть при помощи Criteria?

вот мапинг класса State
Код

package de.hacon.requests;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;

@Entity
public class State implements Serializable {
    
    private long id;
    
    private Calendar timeStamp;
    
    private int nrOfUsedCommSocket;
    
    private int jobQueueDepth;
    
    private String clientIp;
    
    private String serverIp;
    
    
    public State() {
    }

    public State(Calendar timeStamp, int nrOfUsedCommSocket, int jobQueueDepth, String clientIp, String serverIp) {
        super();
        this.timeStamp = timeStamp;
        this.nrOfUsedCommSocket = nrOfUsedCommSocket;
        this.jobQueueDepth = jobQueueDepth;
        this.clientIp = clientIp;
        this.serverIp = serverIp;
    }
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
    
    @Column(nullable = false)
    public String getClientIp() {
        return clientIp;
    }

    public void setClientIp(String clientIp) {
        this.clientIp = clientIp;
    }

    @Column(nullable = false)
    public int getJobQueueDepth() {
        return jobQueueDepth;
    }
    
    
    public void setJobQueueDepth(int jobQueueDepth) {
        this.jobQueueDepth = jobQueueDepth;
    }
    
    @Column(nullable = false)
    public int getNrOfUsedCommSocket() {
        return nrOfUsedCommSocket;
    }

    public void setNrOfUsedCommSocket(int nrOfUsedCommSocket) {
        this.nrOfUsedCommSocket = nrOfUsedCommSocket;
    }
    
    @Column(nullable = false)
    public String getServerIp() {
        return serverIp;
    }

    public void setServerIp(String serverIp) {
        this.serverIp = serverIp;
    }
    @Column(name = "timeStamp", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @Type(type="calendar")
    public Calendar getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(Calendar timeStamp) {
        this.timeStamp = timeStamp;
    }
    
    

    
}



Это сообщение отредактировал(а) unkis - 15.5.2007, 15:01


--------------------
www.unkis.com
PM MAIL WWW   Вверх
unkis
  Дата 15.5.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Ребята, пытаюсь сделать что-то типа такого
Код

Calendar calStart = new GregorianCalendar();
            Calendar calEnd =  new GregorianCalendar();
            calStart.set(2005, Calendar.AUGUST, 1,0,0,0);
            calEnd.set(2005, Calendar.AUGUST, 31,0,0,0);
            Criteria crit = entityManager.createCriteria(State.class);
            crit.add(Restrictions.between("timeStamp", calStart,calEnd));
            crit.setProjection(Projections.rowCount() );            
            List results = crit.list();

но это к примеру только за Август, а как мне сделать чтобы вывел количество за все существующие месяцы?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
tux
Дата 15.5.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Это что-ли?
Код

calStart.set(2005, Calendar.JANUARY, 1, 0, 0, 0);
calEnd.set(2006, Calendar.JANUARY, 1, 0, 0, 0);

PM MAIL Skype GTalk Jabber YIM   Вверх
unkis
  Дата 15.5.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



tux,  я не совсем правильно выразился, я бы хотел получить количество за все существующие месяцы, но сгруппированный по месяцам. 
к примеру август-563, сентябрь-896 и так далее.

в sql это выглядит вот так вот 
Код

SELECT count(*) as anzahl, DATE_FORMAT(timeStamp,'%m.%Y') FROM state s
group by DATE_FORMAT(timeStamp,'%m.%Y')
order by timeStamp asc


но как мне такое же получить через критерии?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
tux
Дата 15.5.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(unkis @  15.5.2007,  16:52 Найти цитируемый пост)
но как мне такое же получить через критерии? 

Такой запрос никак. А почему именно критерии? Почему запрос на HQL не подходит?
PM MAIL Skype GTalk Jabber YIM   Вверх
unkis
Дата 15.5.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



ну просто, HSQ он уже более завязан на конкретную базу данных, а criteria насколько я понимаю нет.
или я ошибаюсь?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
tux
Дата 15.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(unkis @  15.5.2007,  19:22 Найти цитируемый пост)
HSQ он уже более завязан на конкретную базу данных

HQL вообще не завязан ни на какую базу. Собственно, как и критерии. В HQL ты оперируешь объектами вместо таблиц и при этом есть возможность писать более-менее нормальные запросы к БД. Критерии ограничены только поиском каких-то объектов по определенным условиям, SQL из них генерируется довольно примитивный. Чтобы в Hibernate написать запрос, привязанный к базе, это надо изрядно постараться. smile
PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.