一对一不用多说.
一对多:
一A对多B.单向: (tb_a,tb_b)
代码省略必须的但和主题的内容如@Entity等标记,Setter,Getter等
class A{
private int id;
………………..其它字段
@OneToMany(cascade = CascadeType.ALL)
private List<B> bs = new ArrayList<B>();
}
class B{
private int id;
…………………其它字段
}
只在A这一端加上@OneToMany就行了.B这一端不用任何标记,这时JPA一定要求另外一个辅助表.表名为:tb_a_tb_b即两表用_连结,其中保存两个表的ID关系.字段名称为:
a_id,B在A中引用的字段+”_ID”;即 bs_id; 如果是自动生成表,这个关联表也会自动生成.
在单向一对多时的操作时也是只需单向设置即可,ID对应关系由关联表自动维护:
B b = new B();
//不用b.setId(xxx);
A a = new A();
a.getBs().add(b);
em.persist(a);
一A对多B.双向(tb_a,tb_b)
如果不想用中间关联表,只能用双向关系:
class A{
private int id;
………………..其它字段
@OneToMany(cascade = CascadeType.ALL,mappedBy="a")
private List<B> bs = new ArrayList<B>();
}
class B{
private int id;
…………………其它字段
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "a_id")
private A a;
}
此时tb_b中需a_id字段.
操作时需要双向设置,否则a_id为null,关系丢失:
B b = new B();
//其它set.
A a = new A();
b.setA(a);
a.getBs().add(b);
em.persist(a);
这样才能正确保存完整的数据格式
多B 对一A.双向(tb_a,tb_b)
当然,你可以从B中利用外健默认单向关联ManyToOne,但这样的单向关系在绝大多数场合没有意义.
如一个班级没有获取学生的集合,却在学生实体中获取班级,虽然可能,但没有多少人不把它做成双向关系的:
这里需要在tb_b中设置a_id为外键关联到tb_a中的id.
class A{
private int id;
………………..其它字
}
class B{
private int id;
…………………其它字段
@ManyToOne(cascade = CascadeType.ALL) //默认多对一,只此一行设置
private A a;
}
而且这里的操作应该是:
A a = new A();
Bb = new B();
b.setA(a);
em.persist(b);
分享到:
相关推荐
介绍使用Myeclipse6.x开发JPA的详细过程以及注意事项
JPA映射关系,多种映射关系的图解,适合EJB初学者,对JPA映射关系的了解.
JPA常用关系实现例子:一对一,一对多,多对一,多对多关系实现代码。
JPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAP
Spring Data JPA中文文档1.4.3
jpa映射关系详解[参照].pdf
Spring Data JPA中文文档[1.4.3].zip
14_传智播客JPA详解_JPA中的多对多双向关联的各项关系操作.rar
JPA和Hibernate的关系,JPA:Java Persistence APIJPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
11_JPA详解_JPA中的一对多延迟加载与关系维护.zip 11_JPA详解_JPA中的一对多延迟加载与关系维护.zip
JPA教程JPA教程JPA教程JPA教程JPA教程
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
11_传智播客JPA详解_JPA中的一对多延迟加载与关系维护.rar
RM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的...
JPA的API非常简洁,但是描述很全面 需要的JPA知识全部可以找到
JPA视频_映射单向多对一的关联关系 · 13. JPA视频_映射单向一对多的关联关系 · 14. JPA视频_映射双向一对多的关联关系 · 15. JPA视频_映射双向一对一的关联关系 · 16. JPA视频_映射双向多对多的关联关系 ...
Spring Data JPA中文文档[1.4.3] Spring Data JPA中文文档[1.4.3]
jpajpajpajpajpajpajpajpajpajpajpajpajpa
Spring Data JPA是Spring基于Hibernate...如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架几乎能做的任何事情。