hibernate 一对多映射的属性类型是set类型,不是list
页面上就不能${pojo.relations[0].xx}这样取值
设有 public class pojo{
private String id
private set relations;
}
public class relation{
private String id;
private String name;
}
如果是freemarker可以按照set取值的方式这样写
${poji.relations.iterator().next().id}//这里只取的第一个值
附上自己的一小段代码:
list = baseDao.findByHql(TUser.class, hql, null);
if(null !=list && list.size()>0)
for (TUser tUser : list) {
super.getHibernateTemplate().initialize(tUser.getTOrganization());
super.getHibernateTemplate().initialize(tUser.getTUserRoleRelates());
//上面只能加载到TUserRoleRelates.id.role.roleId,如要获取roleName,roleDesc,继续加载!
Set roleSet=tUser.getTUserRoleRelates();
if(!roleSet.isEmpty() && null!=roleSet){
Iterator it=roleSet.iterator();
//这里只取第一个结果,默认一个用户对应一个角色
TUserRoleRelate tRelate=(TUserRoleRelate)it.next();
//加载角色信息
super.getHibernateTemplate().initialize(tRelate.getId().getTRole());
}
}
return list;
ftl页面:
${item.TUserRoleRelates.iterator().next().id.TRole.roleName!}