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   小强斋太  阅读(358)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2012年9月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6
点击右上角即可分享
微信分享提示