休眠数据库获取器



我正在尝试从数据库中获取数据。我正在使用一些冬眠的东西或其他东西。我的类看起来像这样:

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 行。

最新更新