Hibernate在一对多映射下集合Set,List,Map的配置

1.Set

1).在set的情况下.hbm.xml的常规配置如下

<set name="addresses" table="t_address">
           <!--这里的这个key相当于是要配置外键  那么这个外键 是会自动的映射到当前的class的主键-->
           <!-- 下面的这个 u_id 会自动的映射成上面的主键的id值-->
           <key column="u_id"></key>
           <!--下面的这个列专门用来存放地址
                                       下面记住因为是集合所以集合中的数据的数据类型必须要写  否则报错
           -->
           <element column="address" type="java.lang.String"></element>
        </set>
2)测试

在写实体的时候要注意要如此写

private Set<String> addresses = new HashSet<String>();

@Test
	public void test() {
		TianmaoUser user=new TianmaoUser();
		user.setuNickName("jgm");
		user.setuPassword("1234");
		
		Set<String> adds=user.getAddresses();
		adds.add("四川资阳");
		adds.add("四川成都");
		HibernateUtil.save(user);
	}
2.List

1).

 <list name="addresses" table="t_address_list">
           <!--配置的是我们的外键-->
           <key column="u_id"></key>
           
           <!--下面就是和set集合唯一区别 下面这个配置表示的是排序的列-->
           <list-index column="indexs"></list-index>
           
           <!--配置的是实质映射的字段-->
  
            <element column="address" type="java.lang.String"></element>      
        </list>

2).

写实体的时候private List<String> addresses = new ArrayList<String>();

测试

@Test
	public void test() {
		TianmaoUser user=new TianmaoUser();
		user.setuNickName("zy");
		user.setuPassword("12dsa34");
		
		List<String> adds=user.getAddresses();
		adds.add("四川de资阳");
		adds.add("四de川成都");
		HibernateUtil.save(user);
	}
3.Map

1).

<map name="addresses" table="t_address_map">
			<key column="u_id"></key>
			<map-key column="keys_001" type="java.lang.String"></map-key>
			<element column="address" type="java.lang.String"></element>
		</map>
2)

写实体属性时 private Map<String, String> addresses = new HashMap<String,String>();

测试类

@Test
	public void test() {
		TianmaoUser user=new TianmaoUser();
		user.setuNickName("jgm");
		user.setuPassword("1234");
		
		Map<String, String> addresses=user.getAddresses();
		addresses.put("key1", "xihaun");
		addresses.put("key2", "beijing");
		HibernateUtil.save(user);
	}
OK,今天学习的太少了。。。。。。。。

没有更多推荐了,返回首页