【发布时间】:2014-06-29 18:32:48
【问题描述】:
我已经阅读了这里的文章,但我无法解决我的问题How to get Id of last persisted entity using JPA
我无法获取学生的最后一个自动递增的主键
这是来自 Servlet 类
if (operation.equalsIgnoreCase("Add")) {
student.setName(name);
student.setAddress(address);
int last = studentDAO.addStudent(student);
request.setAttribute("last", last);
request.setAttribute("student", student);
}
这是来自会话 bean:
public int addStudent(Student student) {
em.persist(student);
em.flush();
System.out.println(student.getStudentID());
return student.getStudentID();
}
我只是用 sout 来测试一下我是否得到了ID,但每次我添加student 时它总是输出0。我无法获得最后生成的id。任何帮助将不胜感激。谢谢!
已编辑: 我的学生班:
封装模型;
导入 javax.persistence.*;
@Entity
@Table
@NamedQueries({@NamedQuery(name="Student.getAll", query="Select e from Student e")})
public class Student {
@Id
@Column
private int studentID;
@Column
private String name;
@Column
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public Student(int studentID, String name, String address) {
this.studentID = studentID;
this.name = name;
this.address = address;
}
public Student(){}
}
--解决了!彼得回答,谢谢!
【问题讨论】:
-
你能把你的学生课贴在这里吗?
-
请同时打印异常的堆栈跟踪(应该会发生异常,除非您做一些基本错误的事情(例如打印错误的变量))。
-
我已经添加了 Student Class 实体。
-
@Andrei 注意。我是新来的,找不到接受答案功能。