我有用户实体并试图通过 id 从 base 获取它。实体定义如下。
package com.hibernate.logic;
import java.io.Serializable;
import java.util.Random;
import javax.persistence.*;
@Entity
@Table(name="users")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="user_id")
private Long userId;
@Column(name="middlename")
private String middlename;
@Column(name="name")
private String name;
@Column(name="surname")
private String surname;
@Column(name="pass")
private String pass;
//bi-directional many-to-one association to Role
@ManyToOne
@JoinColumn(name="role_id")
private Role role;
public User() {
Random random = new Random();
this.userId = random.nextLong();
this.name = "";
this.surname = "";
this.middlename = "";
}
public Long getUserId() {
return this.userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getMiddlename() {
return this.middlename;
}
public void setMiddlename(String middlename) {
this.middlename = middlename;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Role getRole() {
return this.role;
}
public void setRole(Role role) {
this.role = role;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
所以 getUserById(Long user_id) 方法没有从数据库中获取信息,它只是调用用户构造函数。为什么会这样?
public User getUserById(Long user_id) {
Session session = null;
User user = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
user = session.load(User.class,
user_id);
Hibernate.initialize(user);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
return user;
}