我从这一行得到"非静态方法无法从静态上下文引用"错误:
createStudent("stu00001", new Date(631152000000)), "m", "WB", new Type_Name("Bob", "", "Smith"));
你如何正确地形成'日期'?我已经看过API并尝试了不同的东西,但我仍然收到错误的日期.
package grade_db;
import bean.Student;
import bean.Type_Name;
import bean.University;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
*
* @author Sam
*/
public class Main {
EntityManager em;
EntityManagerFactory emf;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
EntityManagerFactory emf = Persistence.createEntityManagerFactory("db/grades.odb");
EntityManager em;
em = emf.createEntityManager();
createStudent("stu00001", new Date(631152000000)), "m", "WB", new Type_Name("Bob", "", "Smith"));
em.close();
emf.close();
}
public Student createStudent(String student_id, Date dob, String gender, String nationality, Type_Name name){
Student stu = new Student();
stu.setDob(dob);
stu.setGender(gender);
stu.setName(name);
stu.setNationality(nationality);
stu.setCampus_id("cam00001");
stu.setCourse_id(null);
stu.setStudent_id(student_id);
em.persist(stu);
return stu;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是你试图createStudent()从静态上下文中调用实例方法main().如果你改变你的createStudent()方法是静态的,你应该好好去:
public static Student createStudent(String student_id, Date dob, String gender, String nationality, Type_Name name) {
// ... And so on
}
Run Code Online (Sandbox Code Playgroud)
编辑:OP指出,这一变化在访问变量时,单独给他另一个错误em和emf.要解决这个问题,你还需要制作这些变量static:
static EntityManager em;
static EntityManagerFactory emf;
Run Code Online (Sandbox Code Playgroud)
那时,你班上的一切都是静态的.假设这是一个简单的一次性或示例 - 我很自在地假设这个类被调用Main- 让一切都静止就好了.总之,代码看起来像这样:
package grade_db;
import bean.Student;
import bean.Type_Name;
import bean.University;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
*
* @author Sam
*/
public class Main {
static EntityManager em;
static EntityManagerFactory emf;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
EntityManagerFactory emf = Persistence.createEntityManagerFactory("db/grades.odb");
EntityManager em;
em = emf.createEntityManager();
createStudent("stu00001", new Date(631152000000)), "m", "WB", new Type_Name("Bob", "", "Smith"));
em.close();
emf.close();
}
public static Student createStudent(String student_id, Date dob, String gender, String nationality, Type_Name name){
Student stu = new Student();
stu.setDob(dob);
stu.setGender(gender);
stu.setName(name);
stu.setNationality(nationality);
stu.setCampus_id("cam00001");
stu.setCourse_id(null);
stu.setStudent_id(student_id);
em.persist(stu);
return stu;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |