对于组件的映射,主类只是将他作为 属性,其他还是一样
private School school;
在声明SCholl的时候
Entity 替换@Embeddable,在xml,声明
@Parent //属性的属于哪一个
private Person_Test person;
-----------------------------------------------------------
使用集合声明的属性
@ElementCollection(targetClass=String.class) //使用的类型
@CollectionTable(name="school_inf_one",joinColumns=@JoinColumn(name="person_id",nullable=false)) 默认将父表的主键作为外键 这里是声明的外键的名字
@Column(name="school_name") //附表的内容的名字
@OrderColumn(name="list_order") //增加排列的名字
private List<String> school=new ArrayList<String>();
@ElementCollection(targetClass=String.class)
@CollectionTable(name="person_love_one",joinColumns=@JoinColumn(name="person",nullable=false))
@Column(name="love_person")
@OrderColumn(name="set_list")
private Set<String> lovePerson=new HashSet<String>();
打扰
@ElementCollection(targetClass=Float.class,fetch=FetchType.EAGER) //默认是延迟加载,这个事取消加载
@CollectionTable(name="score_inf",joinColumns=@JoinColumn(name="perisn_id",nullable=false))
@MapKeyColumn(name="subject_name")
@MapKeyClass(String.class)
@Column(name="mark")
private Map<String,Float> scores=new HashMap<String,Float>();
@ElementCollection(targetClass=String.class,fetch=FetchType.EAGER)
@CollectionTable(name="Childent_inf",joinColumns=@JoinColumn(name="person_id",nullable=false))
@Column(name="childe_name")
@SortNatural //自然排序
private SortedSet<String> child=new TreeSet<String>();
@ElementCollection(targetClass=String.class,fetch=FetchType.EAGER)
@CollectionTable(name="father_name",joinColumns=@JoinColumn(name="person_id",nullable=false))
@Column(name="father_name_test",nullable=false)
@OrderBy("father_name_test desc")
private Set<String> father_name=new HashSet<String>();
-----------------------------------
此外就不用声明表了,但是执行时,会创建表
对于school 不用保存,因为是作为person的 属性,他会自动保存,然后将School的属性,打开,放在主表里
对于类集合,他是通过主类保存,他也不用持久化,他都都可以看做是person的属性,思考的时候再小心点