Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Вопрос по hibernate


Автор: kozlozhop 3.5.2009, 17:49
Здорово!

есть такой метод:
Код

@Override
    public Long getMaxIdOrder() throws DataAccessException {
        HibernateCallback callback = new HibernateCallback() {
            @Override
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                String query = "SELECT MAX(o.id) FROM OrderEntity as o";
                return session.createQuery(query);
            }
        };        
        return (Long) getHibernateTemplate().execute(callback);
    }


При обращении к нему вылетает вот это
Код

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: org.hibernate.impl.QueryImpl cannot be cast to java.lang.Long


В общем я пробовал менять Long На Integer и в маппинге и в реализации, но не помогло  smile 
Есть у кого какие идеи?

Автор: powerOn 3.5.2009, 22:04
Ошибка достаточно четко указана: org.hibernate.impl.QueryImpl нельзя преобразовать в java.lang.Long.

Автор: _and 4.5.2009, 04:25
session.createQuery(query) - возвращает объект типа Query а тебе нужен результат запроса,
пробуй сделать session.createQuery(query).uniqueResult() или session.createQuery(query).list()

Автор: kozlozhop 5.5.2009, 22:08
спасибо за ответы, проблему решил через uniqueResult(), но появился новый вопрос. 

Есть 2 таблицы, сваязанные отношением один ко многим. Допустим в певрой таблице поля id_table1, something1, во второй таблице поля id_table2, id_table1, т.е. связаны через  id_table1. Допустим я загрузил в 1-ую таблицу данные, как мне узнать сформированный id_table1, чтобы использовать его во 2 таблице?

Пока использовал метод, написанный в 1-ом посте для нахождения максимальнго id сразу после вставки, но, на мой взгляд это не лучший вариант...

Автор: _and 6.5.2009, 05:12
в любом случае это не лучший вариант
при правильно настроенном маппинге хибернейт сам сделает это за тебя 
посмотри http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#example-parentchild

Автор: kozlozhop 7.5.2009, 21:05
Цитата(_and @ 6.5.2009,  05:12)
в любом случае это не лучший вариант
при правильно настроенном маппинге хибернейт сам сделает это за тебя 
посмотри http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#example-parentchild

спасибо, помогло!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)