需求如下:
公司信息表company_info:name(姓名)、nature(性质外键关联nature_code)
公司的性质放置到另外一张表
公司性质表company_nature:nature_code(公司性质代码)、nature_des(公司性质描述)
name | nature |
软件公司 | 1 |
nature_code | nature_des |
1 | 国企 |
首先通过MyEclipse根据数据库反向自动创建entity
public class CompanyInfo implements java.io.Serializable {
private String name;
private CompanyNature companyNature;
//注意下面的FetchType默认为lazy,手动改为EAGER,这样在一个session中同时获取两个实体类
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "scale")
public CompanyScale getCompanyScale() {
return this.companyScale;
}
public void setCompanyScale(CompanyScale companyScale) {
this.companyScale = companyScale;
}
//相关自动生成的构造方法和set get方法
}
public class CompanyNature implements java.io.Serializable {
private Integer natureCode;
private String natureDes;
private Set<CompanyInfo> companyInfos = new HashSet<CompanyInfo>(0);
//注意下面的FetchType默认为lazy,手动改为EAGER,这样在一个session中同时获取两个实体类
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "companyNature")
public Set<CompanyInfo> getCompanyInfos() {
return this.companyInfos;
}
public void setCompanyInfos(Set<CompanyInfo> companyInfos) {
this.companyInfos = companyInfos;
}
//相关自动生成的构造方法和set get 方法
}
二、dao
public List queryCompany(){
List resultList = null;
session = getCurrentSession();
Query query = session.createQuery("FROM CompanyInfo");
resultList = query.list();
return resultList;
}
action
public String queryCompany() throws Exception{
TelService telService = (TelService)getBeanFromCurrentContext("TelService");
List<CompanyInfo> l = telService.queryCompany();
getServletRequest().setAttribute("companyInfoList", l);
return "queryCompany";
}
jsp页面
<table border="1">
<s:iterator value="#request.companyInfoList" id="CompanyInfo">
<tr><td>
<s:property value="#CompanyInfo.name"/>
</td><td>
<s:property value="#CompanyInfo.companyNature.natureDes" />
</td>
</tr>
</s:iterator>
</table>