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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate, simple properties 
:(
    Опции темы
Tony
  Дата 8.3.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Приветик чудики smile !
Есть код: List list=ses.createSQLQuery("select * from events").addEntity(Event.class).list();
No questions.
Но как бить если мне нузно 4тоби обекти били облегчённие.Тоест иницилизировани отделние проперти, но не все.Пробивал по всякому smile smile но вилитает Exception


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
tux
Дата 8.3.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Привет, чудик!
Решается все достаточно просто. Нужно определить в классе конструктор с необходимым перечнем параметров и использовать конструктор внутри запроса. Вот пример выполнения запроса:
Код

List files = session
    .find("select new DpoFile(f.id, f.fileName, f.fileSize, "
        + "f.contentType, f.fileDescription, f.fileType) from DpoFile as f where f.folder.id = ?",
        new Object[]{folderId},
        new Type[]{Hibernate.STRING});

А таким образом выглядит конструктор в классе DpoFile:
Код

public class DpoFile implements Serializable, HibernateStoredObject {
    private String id;
    private String fileName;
    private int fileSize;
    private String contentType;
    private byte[] content;
    private DpoFolder folder;
    private FileType fileType;
    private String fileDescription;
    private String fileSummary;
    private Date fileTime;

    public DpoFile(String id, String fileName, int fileSize, String contentType, String fileDescription, FileType fileType) {
        this.id = id;
        this.fileName = fileName;
        this.contentType = contentType;
        this.fileSize = fileSize;
        this.fileDescription = fileDescription;
        this.fileType = fileType;
    }
}

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Момент.Я исплзую Bean .Я не могу сделать конструктор.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
tux
Дата 8.3.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(Tony @ 8.3.2006, 21:29 Найти цитируемый пост)
Момент.Я исплзую Bean .Я не могу сделать конструктор.

Ясно. Тогда делаем еще проще smile

Пример из Hibernate Reference Documentation:
Код

String sql = "select cat.originalId as {cat.id}, " +
    "cat.mateid as {cat.mate}, cat.sex as {cat.sex}, " +
    "cat.weight*10 as {cat.weight}, cat.name as {cat.name} " +
    "from cat_log cat where {cat.mate} = :catId"
    
List loggedCats = sess.createSQLQuery(sql)
    .addEntity("cat", Cat.class)
    .setLong("catId", catId)
    .list();

В запросе, естественно, должны быть перечислены только нужные поля таблицы и атрибуты объектов. Конструкции без фигурных скобок задают таблицу.поле, конструкции типа {cat.mate} задают объект.атрибут.
PM MAIL Skype GTalk Jabber YIM   Вверх
Tony
  Дата 8.3.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Спасибки попробую


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
  Дата 13.3.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Не получается.Есть класс 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


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
tux
Дата 13.3.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Да, действительно не получается. При получении экземпляра объекта Hibernate пытается получить и отсутствующие в запросе поля таблицы, что вызывает исключение драйвера JDBC. Что же, попробую подумать как его обмануть.

В следующий раз постарайся писать какая возникла ошибка и где, приводить stackTrace и т.п.
PM MAIL Skype GTalk Jabber YIM   Вверх
Tony
Дата 13.3.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Ошибка странная

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


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
  Дата 17.3.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Не ужели не кто не знает !!! smile
Без етого не лзя исплзовать Hibernate


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
tux
Дата 18.3.2006, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Мдя. Похоже первый способ с конструктором - единственный решающий проблему. Честно говоря не представляю себе ситуацию когда нельзя написать конструктор хотя бы для решения именно этой задачи.
PM MAIL Skype GTalk Jabber YIM   Вверх
Tony
Дата 20.3.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



mda ......Осталось добавить мы все умрём. smile smile


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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