我正在尝试从数据库中获取数据。我正在使用一些冬眠的东西或其他东西。我的类看起来像这样:
public class App {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
DBUser user = new DBUser();
user.setUserId(104);
user.setUsername("name1");
user.setCreatedBy("system1");
user.setFirst_name("name");
user.setSurname("surname");
user.setCreatedDate(new Date());
session.save(user);
session.getTransaction().commit();
session.beginTransaction();
DBUser user3 = (DBUser) session.get(DBUser.class, 1);
System.out.println(user3.getUsername());
session.getTransaction().commit();
}
}
DBUser看起来像这样:
@Entity
@Table(name = "DBUSER")
public class DBUser implements java.io.Serializable {
private int userId;
private String username;
private String createdBy;
private Date createdDate;
private String first_name;
private String surname;
public DBUser() {
}
public DBUser(int userId, String username, String createdBy,
Date createdDate) {
this.userId = userId;
this.username = username;
this.createdBy = createdBy;
this.createdDate = createdDate;
}
@Id
@Column(name = "USER_ID", unique = true, nullable = false, precision = 5, scale = 0)
public int getUserId() {
return this.userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
@Column(name = "USERNAME", nullable = false, length = 20)
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
@Column(name = "CREATED_BY", nullable = false, length = 20)
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
@Temporal(TemporalType.DATE)
@Column(name = "CREATED_DATE", nullable = false, length = 7)
public Date getCreatedDate() {
return this.createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
@Column(name = "FIRST_NAME", length=20)
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
@Column(name = "SURNAME", length=20)
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
当我运行这段代码时,它会返回此错误:
Exception in thread "main" java.lang.NullPointerException
at com.mkyong.app.App.main(App.java:27)
拜托,怎么了?
您确定数据库中存储了 ID 为 1 的用户吗?
DBUser user3 = (DBUser) session.get(DBUser.class, 1);
System.out.println(user3.getUsername());
如果没有 id 等于 1 的用户,则session.get()
将返回null
,因此当您调用getUsername()
时,将抛出NullPointerException
。尝试这样的事情:
DBUser user3 = (DBUser) session.get(DBUser.class, 1);
if (user3 != null) {
System.out.println(user3.getUsername());
} else {
System.out.println("No user with given ID exists.");
}
顺便说一句:我只是假设这是抛出错误的地方,因为我无法从您的代码片段中分辨出哪一行实际上对应于第 27 行。