[英]Null value returned in getter
我創建了一個簡單的程序,該程序將詢問用戶其用戶名,並且一切正常,直到進行身份驗證為止。 我已經將數據手動插入數據庫中以進行測試,現在我想通過檢查用戶是否輸入了與數據庫中相同的用戶名來驗證用戶的登錄名。 但是,當我詢問管理員對象的吸氣劑時,將返回空值。
有人可以幫我解決為什么數據庫中的數據返回null的原因嗎? 謝謝。
供參考:
public void actionPerformed(ActionEvent e) {
//objects for connection
//Testing
Administrator cevo = new Administrator();
//==========================================//
Session session = HibernateUtility.getSessionFactory().openSession();
session.beginTransaction();
if (username.getText().equals(cevo.getGivenName())) { //Returned Value is Null, but data is present in DB.
System.out.println("MATCH");
}
else{
System.out.println(cevo.getGivenName());
System.out.println(username.getText());
System.out.println("NO MATCH");
}
session.clear();
session.close();
}
});
}
這是我的管理員類,僅供參考:
@Entity()
@Table(name = "ADMINISTRATOR", schema = "registrationsystem")
public class Administrator implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@JoinColumn(name ="ID", nullable = false)
protected int ID;
@Column(name = "NAME")
protected String name;
@JoinColumn(name = "FAMILYNAME")
//@OneToOne(mappedBy = "familyname", fetch = FetchType.LAZY)
protected String familyName;
@JoinColumn(name = "AGE")
//@OneToOne(mappedBy = "age", fetch = FetchType.LAZY)
protected int age;
@JoinColumn(name = "OCCUPATION")
// @OneToOne(mappedBy = "occupation", fetch = FetchType.LAZY)
protected Occupation occupation;
public Administrator() {
}
public String getGivenName() {
return name;
}
public void setGivenName(String givenName) {
this.name = givenName;
}
public String getFamilyName() {
return familyName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Occupation getOccupation() {
return occupation;
}
public void setOccupation(Occupation occupation) {
this.occupation = occupation;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
您的代碼似乎有些混亂,因為您實際上沒有查詢數據庫中的任何內容。
Administrator cevo = new Administrator();
if (username.getText().equals(cevo.getGivenName())) {
System.out.println("MATCH");
}
顯然, cevo.getGivenName()
返回null,因為它尚未初始化。 僅僅因為您從事務內部的任意對象中調用方法並不意味着它會自動獲取相應的數據庫對象。 Hibernate具有豐富的功能,但最終並不是魔術。
您應該嘗試查詢管理員。 這里有一些提示:
Query query = session.createQuery("select Administrator where id = :admin_id");
query.setParameter("admin_id", 1);
Administrator result = (Administrator) query.getSingleResult();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.