之前本人已经发过一次类似的帖子了!后来按帖子里面的内容去做,是可以的。但是这一次又不行!请指教! public User searchUser(String str) {
// TODO Auto-generated method stub
try{
Session s=hibernateUtil.currentSession();
hibernateUtil.beginTransaction();
User user=(User)s.load(User.class, str); 
s.flush();
System.out.println(user.getPassword());
hibernateUtil.commitTransaction();
hibernateUtil.closeSession();
return user;
}
catch(HibernateException e){
log.fatal(e);
}
return null;

}问题就是为什么我要打印才能正确运行呢?如果不打印却不能获得正确的user类!
这次我已经对user类里面的每个属性设置了lazy,但是还是不行!
 <class name="entity.User" table="user" catalog="hr">
        <id name="username" type="java.lang.String">
            <column name="username" length="45" />
            <generator class="assigned" />
        </id>
        <property name="password" type="java.lang.String" lazy="true">
            <column name="password" length="45" />
        </property>
        <property name="QEmp" type="java.lang.Short" lazy="true">
            <column name="q_emp" />
        </property>
        <property name="QTra" type="java.lang.Short" lazy="true">
            <column name="q_tra" />
        </property>
        <property name="QSal" type="java.lang.Short" lazy="true">
            <column name="q_sal" />
        </property>
        <property name="QIns" type="java.lang.Short" lazy="true">
            <column name="q_ins" />
        </property>
        <property name="QDep" type="java.lang.Short" lazy="true">
            <column name="q_dep" />
请指教!

解决方案 »

  1.   

    没出异常吧,log里没写入东西吗?
      

  2.   

    应该没有问题啊
    你可以写一个测试类,测试这个方法
    public Class Test{
      public static void main(String [] args){
        //实例化
        Test test = new Test();
        //调用searchUser(String)
        //对了,你的searchUser是根据id查数据库的吧
       User user = test.searchUser("1001");//1001是一个id
     System.out.println(user.getPassword()); 
     System.out.println(user.toString()); 
      }
    public User searchUser(String str) { 
    // TODO Auto-generated method stub 
    User user = new User();
    try{ 
    Session s=hibernateUtil.currentSession(); 
    hibernateUtil.beginTransaction(); 
    user=(User)s.load(User.class, str);  
    s.flush(); 
    hibernateUtil.commitTransaction(); 
    hibernateUtil.closeSession(); 

    catch(HibernateException e){ 
    log.fatal(e); 

    return user; 

    }
    看看怎么样
      

  3.   

    s.load()返回的是user对象的代理.(因为懒加载).所以你必须先调用下user里的方法(除去getClass()等).
      

  4.   

    没有问题的... 
    要是还不行把load方法改成get方法看看...
      

  5.   

    太感谢smallclub了!改用get以后真的可以!并且可以不用调用一下user里面的方法!