如何在加载多方数据时同时加载一方数据

banq老师您好:
我目前正在学习SSH,学hibernate时,做的宠物事例中,有宠物信息表petInfo,宠物日记Diary,宠物类别petType,其中,petInfo和Diary存在一对多,petType和petInfo也存在一对多关系,当我在得出宠物列表时,却不能得到petType
代码如下:
实体类
Diary中的字段为:
private Integer diaryId;
private PetInfo petInfo=new PetInfo();
private Date diaryDate;
private String diaryTitle;
private String diaryWeather;
private String diaryContext;
private String diaryIsPublic;
private Date diaryLastModify;
private String diaryAuthor;
private String diaryAuthorEmail;

petInfo中的字段为:
private Integer petId;
private PetType petType;
private String petName;
private String petSex;
private Integer petStrength;
private Integer petCute;
private Integer petLove;
private String petIntro;
private String petOwnerName;
private String petOwnerEmail;
private String petPassword;
private String petPic;
private List diaries = new ArrayList();

petType中的字段为:
private Integer petTypeId;
private String petType;
private List petInfos = new ArrayList();

调 用PetInfoDispatchAction显示宠物列表时,在页面上要显示petType中的petType(宠物类别)
但当我用session.createCriteria(class).add(Example.create(object)).list()得到列表后
却发现其中的petType是空的,导致出错
我有页面是用petInfo.petType.petType来得到宠物类别显示,报错说找不到,而且显示session was closed
加上lazy="false"也没办法,不知道是什么原因?
我的hibernate为3.0版本.

你需要在petInfo的配置文件中配置 双向的petType关系。

是不是在配置文件中写上inverse="true" ?在petType和petInfo中都写上吗?

尽量让关联有方向性,没必要的时候最好不用双向关联。
type只是描述一个pet的,就是说pet载入的时候应该已经拥有了type,如果限定了一个pet只能有一个直接type,应该设置成pet到type的多对一单向关联。fetchtype=join是一定能载入的