Как выполнить HibernateQuery

Я перехожу на java с С#, это моя первая попытка что-то написать, и я пытаюсь настроить свой уровень данных, но я думаю, что мне не хватает чего-то вроде DataContext в LINQ to SQL в .NET.

Я пытаюсь запросить базу данных с помощью Hibernate, но кажется, что я что-то упускаю, я скачал Hibernate 4 и QueryDSL для безопасных запросов.

Затем я подключился к своей базе данных postgreSQL и сгенерировал объекты DAO с помощью Dali (я думаю? В меню я выбрал объекты JPA из таблиц), написал запросы, которые мне нужны, но я не уверен, на каком объекте я должен выполнить свой запрос (что-то вроде диспетчера соединений или что-то?)

Я что-то упускаю здесь, я думаю:

EmployeesRepository repo = new EmployeesRepository();
List<Employees> employees = repo.GetByName("Steve");
Employees s = employees.get(0);
String g = s.getName();

Мой репозиторий сущностей:

public class EmployeesRepository {

    public List<Employees> GetByName(String ename)
    {
        HibernateQuery qry = createQuery(employees);
        qry.where(employees.name.like(ename));
        return qry.list(employees);
    }

    private HibernateQuery createQuery(QEmployees employee)
    {
        return new HibernateQuery().from(employee);
    }
}

Я собираюсь:

java.lang.UnsupportedOperationException: нет доступного сеанса в отдельном запросе


person formatc    schedule 02.12.2012    source источник


Ответы (1)


Вам необходимо создать/открыть сеанс гибернации перед выполнением запроса.

Пример:

Session session = HibernateUtil.getSessionFactory().openSession();

Когда вы закончите выполнение запроса, вам нужно закрыть.

session.close();

Вот пошаговый пример.

Примечание. Может быть несоответствие версии спящего режима между тем, что вы используете, и версией, описанной в приведенном выше примере, вам может потребоваться просто настроить ее.

person kosa    schedule 02.12.2012
comment
Можете ли вы показать мне пример того, как это сделать? Мне не хватает некоторых файлов, например, какой-то конфигурации? - person formatc; 02.12.2012
comment
@user1010609 user1010609: Приведена ссылка на пример, который должен вам помочь. - person kosa; 02.12.2012
comment
Спасибо, вроде хорошо. Я надеюсь, что у меня не будет никаких проблем, так как я создал свой DAO немного иначе, чем в учебнике. - person formatc; 02.12.2012
comment
Затем созданный сеанс будет использоваться в конструкторе HibernateQuery: new HibernateQuery(session) - person Timo Westkämper; 02.12.2012