正向的一对多关系,一般只应用在下拉列表中,通过关联来动态生成多级的下拉列表。 后台完成查询全部省份的方法,在页面上加入超连接。
在Action中完成查询和传递数据的操作。 public class ProvinceAction extends ActionSupport { private List allProvince; public String list() throws Exception { allProvince = ServiceFactory.getIProvinceServiceInstance()。list(); return "list"; } /pages/province/province_list.jsp 测试时,会提示懒汉式加载异常,因为在页面上才查询城市信息。 为了解决这个问题,可以使用以下两种方法: 1) 不关闭连接(不推荐) 2) 不使用懒汉式,需要在映射文件中修改。 同时,测试时还会发现,顺序会随机改变,这就需要也修改映射文件,设置关联对象的排序顺序。 省份选项还可以改为以下形式 如果是反向多对一的功能,在所有的添加,修改和查询操作中,都会有区别。 这里新建立一张 新闻类型表,同时,在新闻表中加入一个 所属分类的字段。 这样,新闻和新闻类型之间存在一对多关系。 新闻类型是一,新闻是多。 建表语句: CREATE TABLE news_type ( tid number(8) primary key , tname varchar2(50) not null ); INSERT INTO news_type VALUES (1,'军事'); INSERT INTO news_type VALUES (2,'政治-'); INSERT INTO news_type VALUES (3,'艺术'); INSERT INTO news_type VALUES (4,'文学'); INSERT INTO news_type VALUES (5,'体育'); DROP TABLE news ; CREATE TABLE news ( id number(8) primary key , title varchar2(50) not null, content varchar2(500) not null, pub_date date not null, type_id number(8) not null, foreign key (type_id) references news_type (tid) on delete cascade ); COMMIT; 根据表,生成映射,替换原有的News信息 下面完成多对一部分的修改: 添加功能: 由于需要选择所在分类,因此要先编写一个查询全部分类的功能。 public List insertPre() throws Exception { List allType = null; try { allType = DAOFactory.getINewsTypeDAOInstance()。findAll(); } catch (Exception e) { e.printStackTrace(); throw e; } finally { HibernateSessionFactory.closeSession(); } return allType; } 这里要注意,由于编写的功能是:新闻管理,因此所有的Service操作都应该写到NewsService中,并没有规定必须在NewsService调用NewsDAO,NewsTypeService里调用NewsTypeDAO,Service与DAO并不是绑定到一起的。 修改超连接。
在Action中添加一个insertPre的操作方法: // 所有新闻分类的信息 private List allType; public String insertPre() throws Exception { allType = ServiceFactory.getINewsServiceInstance()。insertPre(); return "insert"; }
在Action中添加一个insertPre的操作方法: // 所有新闻分类的信息 private List allType; public String insertPre() throws Exception { allType = ServiceFactory.getINewsServiceInstance()。insertPre(); return "insert"; }