2014-11-22 54 views
0

我想從我的數據庫中獲取數據。我正在使用一些休眠的東西或東西。我的階級是這樣的:休眠數據庫獲取器

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) 

請,那是什麼錯誤?

回答

0

您確定您的用戶身份證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.