gpt4 book ai didi

java - getter 中返回空值

转载 作者:行者123 更新时间:2023-12-02 11:02:04 28 4
gpt4 key购买 nike

我创建了一个简单的程序,它将询问用户他们的用户名,并且在身份验证之前一切都正常工作。我已将数据手动插入数据库以进行测试,现在我想通过检查用户是否输入了与数据库中相同的相应用户名来验证用户的登录。但是,当我请求管理员对象的 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();
}

});

}
<小时/><小时/>

这是我的管理员类(class),仅供引用:

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

关于java - getter 中返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51262785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com