请教:ssh中 多对一关系 查询问题
小弟现在做s2sh下OA项目遇到个问题,想了半天没想出来,上论坛来请教一下高手们 *_*
@Entity
@Table(name="_organization")
public class Organization {
private int id;
private int sn;//编号
private String name;
private String description;
private Organization owner;//属于那个机构 即父机构
private Set<Person> child;
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany(mappedBy="parent")//这个查询暂时没用到
public Set<Person> getChild() {
return child;
}
public void setChild(Set<Person> child) {
this.child = child;
}
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="pid")
public Organization getOwner() {
return owner;
}
public void setOwner(Organization owner) {
this.owner = owner;
}
...//其他普通get/set
}
数据库表:
+----+-------------+------------+----+------+
| id | description | name | sn | pid |
+----+-------------+------------+----+------+
| 1 | NULL | 总公司 | 0 | NULL |
| 2 | NULL | 行政部门 | 0 | NULL |
| 3 | NULL | 北京分公司 | 0 | NULL |
| 4 | NULL | 上海分公司 | 0 | NULL |
+----+-------------+------------+----+------+
orgAction:
public class OrgAction extends ActionSupport{
private OrgManager orgManager;
private List<Organization> orgs;
....
}
现在问题是 我在前台访问 action 他要读出这张表的内容 展现内容为 id name sn owner.name(父机构名字)
前台通过<s:iterator value="orgs" var="org">
<li><s:property value="name"/></li>
<li><s:property value="org.getOwner().getName()"/></li>//这个要怎么展现?
</s:iterator>
我这样写的错误是struts2报错:target is null for method getOwner
请问有什么解决方案么?
补充说明下 我就是想要拿到org 的owner(父机构)的name 这个貌似有点像是lazyinit的问题了
[解决办法]
fetch = FetchType.LAZY
[解决办法]
一对多用迭代器 多对一修改*.hbm.xml的参数 lazy="false"即可