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行