LINUX.ORG.RU

Построение HQL для Postgress со схемой.

 , ,


0

1

Как построить запрос?

Схема БД указана в настройках подключения к БД.

Если делать

session().get(User.class, id);
то все нормально грузится.

Но когда мне надо сделать произвольный запрос, то вариант

Query query = session().createQuery("FROM myschema.users WHERE login = :login");
        query.setString("login", login);
        User user = (User) query.uniqueResult();
то это вызывает ошибку:
org.hibernate.hql.internal.ast.QuerySyntaxException: myschema.users is not mapped

Потому что Entity объявлен без указания схемы:

@Entity
@Table(name = "users")
public class User implements Serializable {
...
}

Я так понимаю, что мне вариант один: вместо HQL писать SQL запросы сначала для получения id записи, а потом уже делать load(Class, id)? Или есть вариант какой?

★★★★★

HQL ссылается на Java-классы, а не на таблицы БД. В данном случае имя класса User, поэтому тебе надо писать from User where login = :login.

Legioner ★★★★★
()

Что же вы все так тащитесь от hibernate, hql, а также от нетипизированных запросов? Что такое умеет hibernate, что вам нужно, как воздух, чего при этом не умеет JPA(jpql)?

BattleCoder ★★★★★
()
Последнее исправление: BattleCoder (всего исправлений: 1)

Гугл мне сказал, что надо сделать @Table(name=«users», schema=«myschema»)

AnDoR ★★★★★
()
Ответ на: комментарий от BattleCoder

я не тащусь. я прочитал книги Spring in Action, Spring для профессионалов и начал тыкать палочкой.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от BattleCoder

Что же вы все так тащитесь от hibernate, hql, а также от нетипизированных запросов? Что такое умеет hibernate, что вам нужно, как воздух, чего при этом не умеет JPA(jpql)?

А ещё лучше Criteria API с Metamodel — вообще никаких стрингов и все ошибки на этапе компиляции.

orm-i-auga ★★★★★
()
Последнее исправление: orm-i-auga (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.