1

PostgreSQL、Intellij IDEA、Spring MVC、Hibernate を使用しています。

テーブル「Users」からユーザーのリストを取得しようとすると、次のような例外が発生します。

SEVERE: サーブレット [アイデア] の Servlet.service() がパス [] のコンテキストで例外をスローしました [リクエストの処理に失敗しました。ネストされた例外は org.hibernate.QueryException: unexpected char: '"' [select * from "Users"]] であり、根本原因は org.hibernate.QueryException: unexpected char: '"' [select * from "Users"] です。

select * from "Users"DB コンソールでSQL クエリ () を実行しようとすると、正常に動作します。

例外を受け取ったときのコードは次のとおりです。

public List listUser() {
  return sessionFactory.getCurrentSession()
      .createQuery("select * from \"Users\"").list();
} 

誰かがこの問題について私にアドバイスできますか?

4

3 に答える 3

0

したがって、HQL を使用しているため、クエリは次のようになります。

select from Users

あなたのEntityクラスがUsers

あるいは単にfrom Users

于 2013-05-17T18:38:24.430 に答える
0

"と をクエリから削除しselect *ます。これらは必要ありません。

.createQuery("from Users")

しかし、あなたのエンティティは本当に呼ばれていますUsersか、それともこれは単なるテーブル名ですか? Hibernate はクエリでエンティティ名を使用することを想定しているためです。

Usersテーブルを直接クエリする場合は、使用します

.createSQLQuery("select * from Users").list();

List<Object[]>代わりに、列が配列の要素である を返すだけです。次のように、休止状態にエンティティへの変換を実行させることができます(私はそれが呼ばれていると思いますUser):

.createSQLQuery("select * from Users").addEntity(User.class).list();

そのためにはHQLバージョンを使用することを本当にお勧めしますが。

于 2013-05-17T18:20:45.217 に答える