您的位置:首页 > 其它

hibernate中的多表对应关系

2016-09-11 10:42 369 查看
1 多对一

javabean(Item.java)

private  User manager;          //子栏目版主

//配置文件
Item.hbm.xml

<many-to-one name="manager" class="com.sanqing.po.User">

//测试
@Test
public void test() {
ItemService itemService= (ItemService) context.getBean("itemService");
Item item=new Item();
item.setItemName("java2");
item.setItemDescription("hhhha");
User user=new User();
user.setUsername("admin12");
//      user.setPassword("12345");
item.setManager(user);
itemService.addItem(item);
System.out.println(item.getManager().getPassword());

}


2.一对多

用于映射集合类的 Hibernate 映射标签取决于接口的类型。比如, 标签用来映射 Set 类型的属性。

javabean  SubItem.java

private Set<Topic> topics;      //子栏目下主题列表

//配置文件

SubItem.hbm.xml

//name的值与SubItem的javabean对应
<set name="topics" cascade="all" lazy="false">          //column的值与topic的数据表中的列值对应
<key column="subItemID"></key>              <!-- 配置外键(外键存放父亲的主键),即通过subItemID查询所有topics -->
<one-to-many class="com.sanqing.po.Topic"/><!-- 配置关联类 -->
</set>

参数说明
1.  cascade="all",表示SubItem进行操作如save和update时,其对应的表topic也会跟着做相关操作
2.  lazy(可选):通过设置 lazy="false",所有的延迟加载(Lazy fetching)功能将被全部禁
用(disabled)。

//测试案例
@Test
public void testquerySubItemByID() {
SubItemDAO subItemDAO= (SubItemDAO) context.getBean("subItemDAO");
SubItem subItem=subItemDAO.querySubItemByID(1);
//System.out.println(subItem.toString());
Set<Topic> topics=subItem.getTopics();
for (Topic topic : topics) {
System.out.println(topic.toString());
}

}


后台输出为:(为截取的部分输出)

Topic [topicID=44, title=java注解, content=java注解的使用

Topic [topicID=41, title=测试发帖, content=jgigk

以上部分为我的个人总结,一对一与多对多的关系还将继续推出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate