hibernate映射集合属性

注意:持久化集合字段必须声明为接口,两个持久化对象不能共享同一个集合元素的引用。

映射集合属性

@ElementCollection{

fetch

targetClass

}

映射集合属性表

@CollectionTable{

name

catalog

schema

indexes

joinColumns

uniqueConstraints

}

@JoinColumn{

columnDefinition

name

insertable

updatable

nullable

table

unique

referencedColumnName

}

@Column

索引列

@OrderColumn

@MapKeyColumn


    List集合属性

示例代码:

// 集合属性,保留该对象关联的学校

@ElementCollection(targetClass=String.class)

// 映射保存集合属性的表

@CollectionTable(name="school_inf",

[email protected]JoinColumn(name="person_id",nullable=false))

// 指定保存集合元素的列为 school_name

@Column(name="school_name")

// 映射集合元素索引的列

@OrderColumn(name="list_order")

private List<String> schools = new ArrayList<>();

    数组几乎与List集合一样

    Set集合属性

           没有索引

     示例代码:

@ElementCollection(targetClass=String.class)

// 映射保存集合属性的表

@CollectionTable(name="school_inf",

[email protected](name="person_id",nullable=false))

// 指定保存集合元素的列为 school_name

@Column(name="school_name",

nullable=false)

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

 Map集合属性

索引列用@MapKeyColumn映射

示例代码:

// 集合属性,保留该对象关联的成绩

@ElementCollection(targetClass=Float.class)

// 映射保存集合属性的表

@CollectionTable(name="score_inf",

[email protected](name="person_id",nullable=false))

@MapKeyColumn(name="subject_name")

//指定Map key的类型为String

@MapKeyClass(String.class)

// 指定保存集合元素的列为 school_name

@Column(name="mark")

private Map<String , Float> score = new HashMap<>();

时间: 2024-10-07 09:40:32

hibernate映射集合属性的相关文章

1-6 hibernate映射集合属性

1.集合类框架 以Tree开头都是按顺序,默认情况下是升序排列. 以Linked 开头的都是按插入顺序排列的. 2.在hibernate中要持久化集合属性时必须将其声明为接口,如 private Set parts=new HashSet(); set元素 3.集合类接口及其常用的实现类: 4.map元素的映射 5.集合外键

(转)Hibernate框架基础——映射集合属性

http://blog.csdn.net/yerenyuan_pku/article/details/52745486 集合映射 集合属性大致有两种: 单纯的集合属性,如像List.Set或数组等集合属性. Map结构的集合属性,每个属性值都有对应的Key映射. 集合映射的元素大致有如下几种: list:用于映射List集合属性. set:用于映射Set集合属性. map:用于映射Map集合性. array:用于映射数组集合属性. bag:用于映射无序集合. idbag:用于映射无序集合,但为集

浅谈Hibernate中映射集合属性以及主键和外键

首先说明一下什么叫主键以及外键. 主键和外键是对于数据库来说的,数据库的表才有主键外键的说法. 主键:主键是指标识某个表中唯一且非空的一条记录行的列,这个列中的值不允许有重复的值,用于确定一个表中的一条记录,实际上主键就是告诉别人:这个数据列是唯一的. 外键:引用另外一个表中的主键,在当前表中不一定为唯一的,但是在被引用表中一般唯一.对于关系型数据库来说(比如MySQL)外键是联系数据表之间的唯一方式,主要目的是控制存储在外键表中的数据. 建立外键的前提:本表的列必须与外键类型相同(外键必须是外

hibernate学习系列-----(7)hibernate对集合属性的操作之List集合篇

今天要写的内容其实不多,本打算将hibernate对集合的操作的内容直接归结为一篇的,但想一想,还是分开写的比较好,毕竟前面的已经发布出去来了,废话不多说,开始吧! 依旧新建一个StudentList.java实体类,其他的属性不变,只是将hobby属性由Set集合类型变为List集合类型,还是把代码贴出来吧,希望不要嫌烦 package com.joe.entity; import java.util.List; public class StudentList { private int i

hibernate学习系列-----(6)hibernate对集合属性的操作之Set集合篇

先说一段废话吧,本打算每天把所学的知识总结为博客的,但是昨天为什么没有写呢?没有学习吗?No,那是为什么?贪玩,对,这位同学说对了,老实说昨天感觉身体不怎么舒服,大家都知道,这其实就是为自己懒找借口,好吧,废话先唠到这儿,下面进入正题. 先说说概念吧 在持久化类中,有时会使用到值类型的对象属性,所谓值类型的对象,是指它对应的类没有对象标识符属性,也就是我们在前面所说的OID,只能作为一个持久化类的属性使用.如果持久化类中一个值类型的集合,那么就需要一张额外的数据库表来保存这个值类型集合的数据,这

hibernate学习系列-----(8)hibernate对集合属性的操作之Collectioon集合篇

度过短暂的周末,又到了周一,继续轻松而愉快的学习,紧承以前的学习,继续了解hibernate对集合的操作学习之旅! 在上一篇中,就已经提前说过,这一篇的内容以及下一篇的内容会有很多相似之处,这里就不再多言了.像往常一样,新建一个StudentCollection.java实体类: package com.joe.entity; import java.util.Collection; public class StudentCollection { private int id; private

hibernate学习系列-----(9)hibernate对集合属性的操作之Map集合篇

照旧,先新建一个StudentMap.java实体类,将hobby属性使用map集合接口来存放: package com.joe.entity; import java.util.Map; public class StudentMap { private int id; private String name; private int age; private Map<String,String> hobby; /** * 无参构造函数 */ public StudentMap(){ } p

Hibernate之映射集合属性

这里先将集合Set在数据库中的存储.就是新建一个表,新建的表的主键对应另一张的外键,而集合的每个值对应一条记录,以同一个set的数据以主键值相同的记录区分. package test.hibernate.set; import java.util.Set; public class User { private Integer id; private String name; private Set<String> addressSet; public Integer getId() { re

集合属性映射

集合属性映射 Hibernate要求持久化集合值字段必须声明为接口,实际的接口可以是java.util.Set.java.util.Collection.java.util.List.java.util.Map.java.util.SortedSet.java.util.SortedMap等.也可以是自定义类型(只需实现org.hibernate.usertype.UserCollectionType接口即可). Hibernate之所以要求使用集合接口来声明集合属性,是因为当程序持久化某个实例