hibernate---->Collection映射

                        集合, 数组类型的映射: set,list, array, map

除了下面的方法外,还可以写自定义类型,即让List, Set集合类型存储到数据库时里面的元素用,号隔开.读出来的时候又分解成集合对象.这个有点像struts的类型转换器.
注意:
  * 这里使用的集合类型时,集合对象里面存放的类型是基本数据类型,而不是复杂类或自定义类.
    如果是自定义类,那可以用 多对一 的映射(放在set中).
  * 集合的映射比较少使用

CollectionMapping.java

package com.ncepu.hibernate;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class CollectionMapping {
	
	private int id;
	
	private String name;
	
	private Set setValue;
	
	private List listValue;
	
	private String[] arrayValue;
	
	private Map mapValue;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set getSetValue() {
		return setValue;
	}

	public void setSetValue(Set setValue) {
		this.setValue = setValue;
	}

	public List getListValue() {
		return listValue;
	}

	public void setListValue(List listValue) {
		this.listValue = listValue;
	}

	public String[] getArrayValue() {
		return arrayValue;
	}

	public void setArrayValue(String[] arrayValue) {
		this.arrayValue = arrayValue;
	}

	public Map getMapValue() {
		return mapValue;
	}

	public void setMapValue(Map mapValue) {
		this.mapValue = mapValue;
	}
}

CollectionMapping.hbm.xml

 <class name="com.ncepu.hibernate.CollectionMapping" table="t_CollectionMapping">
   <id name="id">
    <generator class="native"/>
   </id>
   <property name="name"/>
   
   <!--生成一个表t_set_value,用于存放set类型的数据-->
   <set name="setValue" table="t_set_value">
    <!--生成一个主键set_id,作为外键参照t_CollectionMapping表主键-->
    <key column="set_id"/>
    <element type="string" column="set_value"/>
   </set>
   
   <list name="listValue" table="t_list_value">
    <key column="list_id"/>
    <!--因为List是有序的,所以还得存放一个下标list_index-->
    <list-index column="list_index"/>
    <element type="string" column="list_value"/>
   </list>
   
   <array name="arrayValue" table="t_array_value">
    <key column="array_id"/>
    <!--数组与List类型一样,也是有序的-->
    <list-index column="array_index"/>
    <element type="string" column="array_value"/>
   </array>
   
   <map name="mapValue" table="t_map_value">
    <key column="map_id"/>
    <!--Map类型得存放map-key和map-value两个值-->
    <map-key type="string" column="map_key"/>
    <element type="string" column="map_value"/>
   </map>
  </class>

t_CollectionMapping

id

name

1

xxx

t_set_values

set_id

set_value

1

a

1

b

t_list_value

list_id

list_value

list_index

1

c

0

1

d

1

t_array_value

array_id

array_value

array_index

1

e

0

1

f

1

t_map_value

map_id

map_key

map_value

1

k1

v1

1

k2

v2

 

posted on 2012-09-05 21:52  小-强-斋-太  阅读(189)  评论(0编辑  收藏  举报

导航