gpt4 book ai didi

java - 在 JPA 中使用列表时出现 ClassCastException

转载 作者:行者123 更新时间:2023-12-02 11:21:07 24 4
gpt4 key购买 nike

我正在尝试在 Eclipse 中执行 JPA 程序。我已经导入了所有必需的包。

这是我的 POJO(@entity) 类

@Entity
public class Student
{
int id,marks;
String name;
Student(int i, int j, String k)
{
id=i;marks=j;name=k;
}
public int getMarks()
{
return marks;
}
public void setMarks(int i)
{
marks = i;
}
}

这是我的“主”类(class)的一部分

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("database/database.odb");
EntityManager em = emf.createEntityManager();
Student s1;
em.getTransaction().begin();
s1 = new Student(1,100,"abcd");
em.persist(s1);
s1 = new Student(2,200,"efgh");
em.persist(s1);
s1 = new Student(3,300,"ijkl");
em.persist(s1);
em.getTransaction().commit();
Query q1 = em.createQuery("select marks from Student");
List<Student> result = q1.getResultList();
em.getTransaction().begin();
for(Student s : result)
{
if(s.getMarks()%200==0)
em.remove(s);
else
s.setMarks(s.getMarks()*2);
}
em.getTransaction().commit();
q1 = em.createQuery("select marks from Student");
System.out.println("Details of students are : " + q1.getResultList());

我期望的输出是:[200, 600]因为第一条和第三条记录中的标记应该乘以 2,而第二条记录应该被删除。

但是我收到一个错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to assg6.Student at assg6.Main.main(Main.java:52)

(我的项目的包名为assg6)

我试过了

List<Student> result =  (List<Student>)q1.getResultList();

for(Student s : (List<Student>)result)

为什么我没有得到预期的输出以及如何得到它?

最佳答案

显然,q1.getResultList() 返回一个整数列表。这并不奇怪,因为您说 Query q1 = em.createQuery("selectmarks from Student");

您可能想改为编写“select s from Student s”

关于java - 在 JPA 中使用列表时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49914373/

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