对于hibernate 多实体关联
不管什么都是many 一端控制关系
person段 单项连接
@ManyToOne(targetEntity=Address.class,cascade=CascadeType.All)
@JoinColumn(name="address_id",nullable=false)
----------------------有表连接
@ManyToMany(targetEnetity=Address.class,cascade=CascadeType.All)
@JoinTable(name="person_address",
joinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id",unique=true), //首先关联本表
inverseJoinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id") //再是关联其他的表
)
-------------------------------------------
@OneToOne(targetEntity=Address.class,cascade=CascadeType.ALL)
JoinColumn(name="address_id",referencedColumnName="address_id") //关联其他表到本表作为外键
-----------------------------------------------------------------
@OneToOne(targetEntity=Address.class,cascade=CascadeType.All)
JoinTable(name="person_address",
joinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id",unique=true), /首先关联本表
inverseJoinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id",unique=true)//关联从表
)
-------------------------------
@OneToMany(targerEntity=Address,class,cascade=CascadeType.ALL)
@JoinColumn(name="person_id",rreferencedColunm="person_id") //关联本表,到Many
对于上述的reference ,他是关联到其他表,但是有时候他是关联本表,但是都是关联到Many段,对于连段差不多,就是先关联本段
referencedColumnName 他与name感觉相同
如有有name的话,他会将后面的字段只作为列名字,但是他总会关联Address_id 关联实体的主键
如果只有referencedNameColumn 他会将实体名字+字段名字杜
对于联合实体,用连接表来连接,不用考虑性能问题,和先持久化那个的问题建议能用变连接就用()