gpt4 book ai didi

java - 使用HQL从数据库中获取数据

转载 作者:行者123 更新时间:2023-11-30 09:23:27 25 4
gpt4 key购买 nike

你好,我有 3 个表的数据库员工:

mysql> describe person;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| person_id | bigint(20) | NO | PRI | NULL | auto_increment |
| date | datetime | YES | | NULL | |
| first_name | varchar(255) | YES | | NULL | |
| last_name | varchar(255) | YES | | NULL | |
| position | varchar(255) | YES | | NULL | |
| salary | double | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+

mysql> describe department;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| department_id | bigint(20) | NO | PRI | NULL | auto_increment |
| dept_name | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+

mysql> describe department_person;
+---------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+-------+
| department_id | bigint(20) | NO | PRI | NULL | |
| person_id | bigint(20) | NO | PRI | NULL | |
+---------------+------------+------+-----+---------+-------+

因此,我想编写 HQL 语句以使用 person.lastName 从 person.position 获取数据,我使用以下代码提取此数据但没有成功:

public List<Person> findPosition(){
Session session =
HiberUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Person> result = session.createQuery("select position from Person p where p.lastName= 'Anderson'").list();
for(Person a : result) {
Hibernate.initialize(a.getDepartmentList());
}
session.getTransaction().commit();
return result;

}

这是它向我展示了这个异常:

Hibernate: select person0_.position as col_0_0_ from person person0_ where person0_.last_name='Anderson'
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to main.Person
at main.StaffDAO.findPosition(StaffDAO.java:100)
at main.Main.main(Main.java:37)

你能帮我编写正确的 HQL 语句吗?

最佳答案

List<Person> result = session.createQuery("select position from Person p where p.lastName= 'Anderson'").list();

您正在选择一个包含 VARCHAR(255) 的属性,但期望它作为 List<Person> 返回.这根本无法计算。

你可以做

List<Person> result = session.createQuery("select p from Person p where p.lastName= 'Anderson'").list();

关于java - 使用HQL从数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com