Java hibernate从表中选择多行并将结果分配到列表中

Kur*_*t X 3 java hibernate row

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

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

例如,我有一个学生表,我想得到表的所有行.我知道每一行都是表/实体类/ bean的一个实例.(假设我有一个实体班级 - 学生)

该表就像(假设我在数据库中有数据表):

表名:sutdent

有四个柱子

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(););
Run Code Online (Sandbox Code Playgroud)

为什么我收到错误消息"未指定令牌*"?

我不能用*?如果我不能使用*,如果我想获得一个记录的一切(所有属性/列),我该怎么办?

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

KSH*_*TiJ 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.
Run Code Online (Sandbox Code Playgroud)


Sud*_*hul 5

在HQL中,这是您编写查询以获取所有对象列表的方式: -

List<student> stlist = HibernateUtil.getSession().createQuery("select s from student s").list();
Run Code Online (Sandbox Code Playgroud)

如果你想获取所有列,甚至允许这样做.

List<student> stlist = HibernateUtil.getSession().createQuery("from student s").list();
Run Code Online (Sandbox Code Playgroud)