Java Hibernate数据库获取程序

Java Hibernate数据库获取程序,java,hibernate,postgresql,Java,Hibernate,Postgresql,我正试图从我的数据库中获取数据。我在用冬眠之类的东西。我的班级是这样的: public class App { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); DBUser user = new DBUser(); user.setUser

我正试图从我的数据库中获取数据。我在用冬眠之类的东西。我的班级是这样的:

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();

}

}
@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;
}


}
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.");
}
DBUser如下所示:

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();

}

}
@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;
}


}
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.");
}
当我运行这段代码时,它会返回以下错误:

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。试着这样做:

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();

}

}
@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;
}


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