| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate |
| Автор: Tony 8.3.2006, 13:39 |
| Приветик чудики Есть код: List list=ses.createSQLQuery("select * from events").addEntity(Event.class).list(); No questions. Но как бить если мне нузно 4тоби обекти били облегчённие.Тоест иницилизировани отделние проперти, но не все.Пробивал по всякому |
| Автор: tux 8.3.2006, 16:08 | ||||
| Привет, чудик! Решается все достаточно просто. Нужно определить в классе конструктор с необходимым перечнем параметров и использовать конструктор внутри запроса. Вот пример выполнения запроса:
А таким образом выглядит конструктор в классе DpoFile:
|
| Автор: Tony 8.3.2006, 16:29 |
| Момент.Я исплзую Bean .Я не могу сделать конструктор. |
| Автор: tux 8.3.2006, 16:59 | ||
| Ясно. Тогда делаем еще проще Пример из Hibernate Reference Documentation:
В запросе, естественно, должны быть перечислены только нужные поля таблицы и атрибуты объектов. Конструкции без фигурных скобок задают таблицу.поле, конструкции типа {cat.mate} задают объект.атрибут. |
| Автор: Tony 8.3.2006, 18:23 |
| Спасибки попробую |
| Автор: Tony 13.3.2006, 16:50 |
| Не получается.Есть класс Event там property id(String),title,date(Date).Хочу вибрать title i id.Пишу String sql="select event_id as {event.id}, " + "title as {event.title} "+ "from events event"; List list=ses.createSQLQuery(sql).addEntity("event",Event.class).list(); log.info(((Event)list.get(0)).getId()); Добавлено @ 16:53 Кстати таблица Events там столбци event_id,title,event_date |
| Автор: tux 13.3.2006, 18:21 |
| Да, действительно не получается. При получении экземпляра объекта Hibernate пытается получить и отсутствующие в запросе поля таблицы, что вызывает исключение драйвера JDBC. Что же, попробую подумать как его обмануть. В следующий раз постарайся писать какая возникла ошибка и где, приводить stackTrace и т.п. |
| Автор: Tony 13.3.2006, 18:36 |
| Ошибка странная org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2148) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) at org.hibernate.loader.Loader.list(Loader.java:2024) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1674) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:147) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164) at events.EventManager.loadList(EventManager.java:93) at events.EventManager.<init>(EventManager.java:19) at events.EventManager.main(EventManager.java:24) Caused by: java.sql.SQLException: Column 'EVENT2_0_0_' not found. at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2806) at com.mysql.jdbc.ResultSet.getTimestamp(ResultSet.java:2427) at org.hibernate.type.TimestampType.get(TimestampType.java:30) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102) at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81) at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:1899) at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1372) at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1300) at org.hibernate.loader.Loader.getRow(Loader.java:1197) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:569) at org.hibernate.loader.Loader.doQuery(Loader.java:689) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2145) ... 9 more |
| Автор: Tony 17.3.2006, 10:23 |
| Не ужели не кто не знает !!! Без етого не лзя исплзовать Hibernate |
| Автор: tux 18.3.2006, 07:03 |
| Мдя. Похоже первый способ с конструктором - единственный решающий проблему. Честно говоря не представляю себе ситуацию когда нельзя написать конструктор хотя бы для решения именно этой задачи. |
| Автор: Tony 20.3.2006, 20:04 |
| mda ......Осталось добавить мы все умрём. |