我无法通过sessionFactory.getCurrentSession()在hibernate中从数据库中获取一行.load(...)

时间:2012-11-27 01:44:42

标签: spring hibernate

我有一个数据库(在postgres中),我正在使用spring 3和hibernate 3,问题是当尝试删除或从数据库中获取一行时,这是我正在使用的类,哦,另一件事在查询之后,一个没有任何错误,那个类User的唯一东西是null

@Repository("userDao")
public class UserDao implements IUserDao {

    @Autowired
    private SessionFactory sessionFactory;

    public void SaveUser(User user) {
    sessionFactory.getCurrentSession().save(user);
    }
    @SuppressWarnings("unchecked")
    public List<User> ListUsers() {
        List<User> users = (List<User>) sessionFactory.getCurrentSession().createCriteria(User.class).list();
        return users;
    }
    public User GetUserById(Integer id) {               
        User user = (User) sessionFactory.getCurrentSession().load(User.class, id);
        return user;
    }
}
顺便说一句,方法,SaveUser和ListUser工作真的很好。

这是模型类

@Entity
@Table(name = "mrbean")
public class User {

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private Integer id;

@NotNull (message = "not null")
@NotEmpty (message = "empty")
@Column (name = "user_name", length = 20, nullable = false, unique = true)
private String userName;

@NotNull 
@NotEmpty (message = "empty password")
@Size (min = 7, max = 20, message = "La contraseña debe tener entre 7 y 20 caracteres")
@Column (name = "password", length = 20, nullable = false)
private String password;

//使用getter和setter

这是hibernate在控制台中显示的内容 用户user =(User)sessionFactory.getCurrentSession()。load(User.class,id)被执行

Hibernate:选择user0_.id为id0_0_,user0_.password为password0_0_,user0_.user_name为user3_0_0_来自mrbean user0_,其中user0_.id =?

1 个答案:

答案 0 :(得分:1)

我会使用“get”而不是“load”,因为load()会创建User的代理(请参阅Hibernate参考资料) 所以我会尝试:用户user =(用户)sessionFactory.getCurrentSession()。get(User.class,id);