SpringDataテーブル関係:多対多
一、エンティティークラス構成の関連関係を作成する:
1、マルチペアマルチ使用注記@ManyToMany構成:a、エンティティに集合属性bを追加、属性にManyToMany注記を追加
c,@JoinTable注記構成関連関係(name中間テーブル名)、現在のテーブルと中間テーブルのマッピング関係、相手テーブルと中間テーブルのマッピング関係
2、多対多関係のうち、一方は関連関係を維持し、他方は維持を放棄するしかない
3、カスケード操作: @ManyToMnay注記 cascadeプロパティの構成
4、表:関連属性に注記を付ける
@ManyToMany(mappedBy = "roles")
メイン・テーブル:関連付けられた属性に注記を付ける
@ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "sys_user_role",joinColumns = @JoinColumn(// 中間テーブルと現在のテーブルマッピングフィールドの名前 name="userid",// 現在のテーブルを参照するプライマリ・キー・フィールド referencedColumnName = "user_id"), inverseJoinColumns = @JoinColumn(// 中間テーブルと現在のテーブルマッピングフィールドの名前 name="roleid",// 現在のテーブルを参照するプライマリ・キー・フィールド referencedColumnName = "role_id") )
二、daoを作成する;マスターテーブルはテーブルdaoからすべてJpaRepositoryを継承する
三、テスト
転載先:https://www.cnblogs.com/zhangrongfei/p/11395297.html
1、マルチペアマルチ使用注記@ManyToMany構成:a、エンティティに集合属性bを追加、属性にManyToMany注記を追加
c,@JoinTable注記構成関連関係(name中間テーブル名)、現在のテーブルと中間テーブルのマッピング関係、相手テーブルと中間テーブルのマッピング関係
2、多対多関係のうち、一方は関連関係を維持し、他方は維持を放棄するしかない
3、カスケード操作: @ManyToMnay注記 cascadeプロパティの構成
4、表:関連属性に注記を付ける
@ManyToMany(mappedBy = "roles")
メイン・テーブル:関連付けられた属性に注記を付ける
@ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "sys_user_role",joinColumns = @JoinColumn(// 中間テーブルと現在のテーブルマッピングフィールドの名前 name="userid",// 現在のテーブルを参照するプライマリ・キー・フィールド referencedColumnName = "user_id"), inverseJoinColumns = @JoinColumn(// 中間テーブルと現在のテーブルマッピングフィールドの名前 name="roleid",// 現在のテーブルを参照するプライマリ・キー・フィールド referencedColumnName = "role_id") )
二、daoを作成する;マスターテーブルはテーブルdaoからすべてJpaRepositoryを継承する
三、テスト
package cn.zrf.jpa;
import cn.zrf.jpa.dao.SysRoleDao;
import cn.zrf.jpa.dao.SysUserDao;
import cn.zrf.jpa.entity.SysRole;
import cn.zrf.jpa.entity.SysUser;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Commit;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class ManyToMany {
@Autowired
SysUserDao sysUserDao;
@Autowired
SysRoleDao sysRoleDao;
@Test
@Transactional
@Commit
public void addUserAndRole(){
//1、
SysUser user = new SysUser();
user.setUserName("admin");
user.setPassword("admin");
//2、
SysRole role = new SysRole();
role.setRoleName(" ");
role.setMome(" ");
//3、
user.getRoles().add(role);
role.getUsers().add(user);
//4、
sysUserDao.save(user);
sysRoleDao.save(role);
}
@Test
@Transactional
@Commit
public void addUserAndRole1(){
//1、
SysUser sysUser = new SysUser();
sysUser.setUserName(" ");
sysUser.setPassword("admin");
SysUser sysUser1 = new SysUser();
sysUser1.setUserName(" ");
sysUser1.setPassword("admin");
//2、
SysRole sysRole = new SysRole();
sysRole.setRoleName(" ");
SysRole sysRole1 = new SysRole();
sysRole1.setRoleName(" ");
//3、
sysUser.getRoles().add(sysRole);
sysUser1.getRoles().add(sysRole);
sysUser.getRoles().add(sysRole1);
sysUser1.getRoles().add(sysRole1);
sysRole.getUsers().add(sysUser);
sysRole1.getUsers().add(sysUser);
sysRole.getUsers().add(sysUser1);
sysRole1.getUsers().add(sysUser1);
//4、
sysUserDao.save(sysUser);
sysUserDao.save(sysUser1);
}
//
@Test
@Transactional
@Commit
public void del(){
sysUserDao.delete(3l);
}
}
転載先:https://www.cnblogs.com/zhangrongfei/p/11395297.html