多对多关系映射
来源:互联网 发布:nvidia cuda windows 编辑:程序博客网 时间:2024/05/18 03:41
个人总结
需要用到@manytomany注解,然后在需要维护关系的一方,加上@joinTable注解。
必须指定一个维护关系,否则会导致关系表id重复出现错误。
@joinTable 有以下属性,joinColumns ,设定该实体类映射在关系表中的外键列名和参照列,inverseColumns ,设定和该实体类关联的实体,在关系表中的外键列名和参照列。name指定表名
在不维护关系的一端,还需要设置mappedBy
同样,由于关系表的存在,所以无论是维护关系的一方还是不维护关系的一方,都默认采用延迟加载策略。
双向多对多关联关系
在双向多对多关系中,我们必须指定一个关系维护端(owner side),可以通过 @ManyToMany 注释中指定 mappedBy 属性来标识其为关系维护端。
@ManyToMany@JoinTable(name="中间表名称",joinColumns=@joinColumn(name="本类的外键",referencedColumnName="本类与外键对应的主键"),inversejoinColumns=@JoinColumn(name="对方类的外键",referencedColunName="对方类与外键对应的主键"))
@ManyToMany(mappedBy="categories") public Set<Item> getItems() { return items; }@JoinTable(name="relationTable", joinColumns={@JoinColumn(name="ITEM_ID",referencedColumnName="ID")}, inverseJoinColumns={@JoinColumn(name="CATEGORY_ID",referencedColumnName="ID")} ) @ManyToMany public Set<Category> getCategories() { return categories; }@Test public void testMany(){ Category category=new Category(); category.setCategory_name("水果"); Category category2=new Category(); category2.setCategory_name("食物"); Item item1= new Item(); Item item2= new Item(); item1.setItemName("苹果"); item2.setItemName("香蕉"); //设定关系 category.getItems().add(item1); category.getItems().add(item2); category2.getItems().add(item1); category2.getItems().add(item2); item1.getCategories().add(category); item1.getCategories().add(category2); item2.getCategories().add(category); item2.getCategories().add(category2); entityManager.persist(item2); entityManager.persist(item1); entityManager.persist(category); entityManager.persist(category2); }
阅读全文
0 0
- 多对多映射关系
- 多对多关系映射
- 多对多关系映射
- Mybatis映射关系-多对一映射
- Hibernate关系映射之多对多关系
- Hibernate对象关系映射-- 多对多关联关系映射
- Hibernate映射关系之多对多关系映射
- Hibernate对象关系映射详解之一对多关系映射
- 关系映射多对多详解
- Hibernate的关系映射多对多
- 双向多对多关系的映射
- hibernate之映射关系多对多
- hibernate 映射关系 多对多
- Hibernate多对多关系映射
- Hibernate映射关系-多对多
- Hibernate 多对多关系映射详解
- mybatis 多对多映射关系
- 详述多对多关系映射
- Sublime text3 快捷键操作
- Bad Hair Day POJ
- Kotlin官网学习(一)基础
- Python 局部变量 全局变量 匿名函数 迭代器
- 把输入数据类型封装成一个类
- 多对多关系映射
- 221. Maximal Square
- H5data-
- linux下 mysql数据库的备份和还原
- Java 通过ssh连接lunix,执行语句
- Markdown语法
- 使用二级缓存
- Valid Anagram
- 比较难理解的部分:Thread-fork/Data/singal(八)