3

テーブルから複数の行/レコードを選択し、その結果を「変数」に入れたいと思います。次に、各行のコンテンツを印刷します。

JavaでHibernateを使用している場合、どうすればよいですか?

たとえば、学生テーブルがあり、テーブルのすべての行を取得したいとします。各行がテーブル/エンティティクラス/Beanのインスタンスであることを私は知っています。(私がエンティティクラス-学生を持っていると仮定します)

テーブルは次のようなものです(データベースにデータを含むテーブルがあると仮定します)。

テーブル名:sutdent

4つの柱で

id、lname、fname、sex

私は次のようなことができることを覚えています:

List<student> stlist=HibernateUtil.getSession().createQuery("select*from student").list();

//here I want to print the lname of the first row/object
System.out.println(stlist.get(0).getLname(););

「予期しないトークン*」というメッセージでエラーが発生するのはなぜですか?

使えない*?*を使用できない場合、レコードのすべて(すべての属性/列)を取得したい場合は、どうすればよいですか?

または他のエラーがありますか?私は何をすべきですか?ありがとう!!

4

3 に答える 3

7
You can do it by two ways.

1. HQL query
2. SQL query

1. HQL Query

- you are using hibernate that means you have done mapping to Student table and Student class.
 you just need to change following line.

List<student> stlist=HibernateUtil.getSession().createQuery("from student").list();

and you will get all records from Student table.

2. SQL Query

- you can do by providing SQL query

     List<Object> stlist=HibernateUtil.getSession().createSQLQuery("select * from student").list();

you will get all records as Object so you need to manually cast to Student.
于 2013-03-12T03:44:51.683 に答える
5

HQL では、すべてのオブジェクトのリストを取得するクエリを次のように記述します。

List<student> stlist = HibernateUtil.getSession().createQuery("select s from student s").list();

または、すべての列を取得する場合は、これも許可されます。

List<student> stlist = HibernateUtil.getSession().createQuery("from student s").list();
于 2013-03-12T03:41:28.387 に答える
0

上記には非常に多くの例が配置されています。これは、単にこれに従うだけで正しいものです。これはあなたの要件に適していると思います。

まず、セッションを開くことができます:

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

util で既にセッションを開いている場合は、次の手順に従うことができます。

Session session = HibernateUtil.getCurrentSession();

データベース テーブルからレコードを取得する場合は、次の簡単なクエリを試してください。

List<Object> slist = session.createQuery("from Student").list();

ここで、Hibernate Query Language (HQL) がプログラマーの負担を取り除きます。ここにクエリ全体を記述する必要はありません。

ここで、1 つのことを思い出すことができます。テーブル名の最初の文字は大文字にする必要があります。そうしないと、例外が発生することがあります。

于 2013-04-22T10:57:19.227 に答える