3

我想从表中选择多行/记录,然后将结果放入“变量”中。然后我想打印每一行的内容。

如果我在 Java 中使用休眠,我该怎么做?

例如,我有一个学生表,我想获取表的所有行。我知道每一行都是表/实体类/bean的一个实例。(假设我有一个实体 class-student )

该表就像(假设我在数据库中有一个包含数据的表):

表名: sutdent

有四列

id、lname、fname、性别

我记得我可以做类似的事情:

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(););

为什么我收到错误消息“unexpectesd token *”?

我不能使用 * ?如果我不能使用 *,如果我想获取记录的所有内容(所有属性/列),我该怎么办?

还是有其他错误?我该做什么?谢谢!!

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) 消除了程序员的负担。无需在此处编写整个查询。

在这里你可以记住一件事。表名的第一个字母必须是大写字母,否则有时会引发异常。

于 2013-04-22T10:57:19.227 回答