我用到2个表:
accounts和messages
允许一个用户可以发多条信息。即accounts为一,messages为多public class Accounts implements Serializable { private String id;
...
private Set message=new HashSet();
...
}
关键配置:
<class name="bean.Accounts">
<id name="id">
<generator class="assigned"></generator>
</id>
<set name="message"
inverse="true"
cascade="all">
<key column="clientId"></key>
<one-to-many class="bean.Messages"/>
</set>
public class Messages implements Serializable { private long id;
...
private Accounts client;
...
}
<class name="bean.Messages">
<id name="id" type="long">
<generator class="increment"></generator>
</id>
<many-to-one 
name="client"
column="clientId"
class="bean.Accounts"
not-null="true">
</many-to-one>
查询代码如下:
Query query=session.createQuery("from Messages");
List list=query.list();
Messages acc=(Messages) list.get(0);
System.out.println(acc.getClient());查询时我已经往数据库插入1条数据,messages表中外键clientId值为“bbbbb”
但是查询输出结果却是bean.Accounts@57df5
刚刚开始学习hibernate
这是怎么回事,请高手帮帮忙,不胜感激

解决方案 »

  1.   

    补充:
    我想查询到messages表的所有数据,但是却查不到clientId列的数据
    请问如何可以查到该列数据
      

  2.   

    这是懒加载的问题~~
    把懒加载改成false
      

  3.   

    System.out.println(acc.getClient()); acc.getClient()得到的是一个对象,直接acc.getClient().id就得到id了
      

  4.   

    clientId是不是设为主键了?Query query=session.createQuery("from Messages");
    List list=query.list();
    Messages acc=(Messages) list.get(0);  ---有错,你想全部查询应该用一个循环语句遍历出来.
    System.out.println(acc.getClient()); 
      

  5.   


    这里我只是用来测试的代码,具体是存到request里到jsp里应用的,谢谢了