Java 在getter中返回Null值
我已经创建了一个简单的程序,它将询问用户的用户名,并且在认证之前一切都正常工作。我已经手动将数据插入到数据库中进行测试,现在我想通过检查用户是否在数据库中输入了相同的用户名来验证用户的登录。但是,当我请求管理员对象的getter时,会返回一个null值 有人能帮我解释一下为什么数据在数据库中时返回null吗?多谢各位 供参考:Java 在getter中返回Null值,java,hibernate,orm,Java,Hibernate,Orm,我已经创建了一个简单的程序,它将询问用户的用户名,并且在认证之前一切都正常工作。我已经手动将数据插入到数据库中进行测试,现在我想通过检查用户是否在数据库中输入了相同的用户名来验证用户的登录。但是,当我请求管理员对象的getter时,会返回一个null值 有人能帮我解释一下为什么数据在数据库中时返回null吗?多谢各位 供参考: public void actionPerformed(ActionEvent e) { //objects for connec
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;
}
这是我的管理员类,仅供参考:
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();
是的,这是正确的,但是我相信使用hibernate可以使用getter和setter从数据库检索数据,因为hibernate需要零参数构造函数。谢谢,我一定会尝试一下,看看应用程序是否成功。我真的很感谢您的支持。您必须使查询稍微适应您的需求。我希望这对你有帮助!如果您有任何其他问题,请随时提问,否则您可以将此标记为答案。