多対多もしくは多対多のスプリング・データ-JPA

対多、多対

国クラス

@Entity 
@Table(名前 = パブリック クラス国{ 
    @Id 
    // 配列同一 
    @GeneratedValue(戦略= GenerationType.IDENTITYを)
     プライベート整数countryId;
     プライベート文字列の国;
     // mappedBy:関連付けを維持して指定します(提供属性名は、オブジェクトに関連付けられている) 
    @OneToMany(= CascadeType.ALLカスケード、mappedBy =で" " // @JoinColumn(名前= "countryId")
    プライベートリスト<市> =市内の新しい新しいのArrayList <>(); // 関連のプロパティ

シティクラス

@Entity 
@Table(名前 = " " パブリック クラスの市{ 
    @Id 
    @GeneratedValue(戦略 = GenerationType.IDENTITYを)
     民間整数cityid。
    プライベート文字列のcityname。
    @ManyToOne(カスケード = CascadeType.ALL)
     民間国国。

CountryDao層

パブリック インターフェース CountryDaoはJpaRepositoryを拡張<カントリー、整数> { 
}

CityDao層

パブリック インターフェース CityDaoはJpaRepositoryを拡張<市、整数> { 
}

CountryController

@Controller
 パブリック クラスCountryController { 

    @Autowired 
    CountryDaoのDAO。

    @Autowired 
    CityDaoのdao1。

    @Autowired 
    StudentDaoのdao2。

    @Autowired 
    TeacherDaoのdao3。

    // 级联增加 
    @RequestMapping(" / onetomany " 公共の文字列onetomany(){ 
        国C1 = 新しい国(); 
        c1.setCountry(" 中国万岁ChinaNo.1 " ); 
        市CT1 = 都市(); 
        ct1.setCityname("香港、中国" ); 
        市CT2 = 新しい新都市(); 
        ct2.setCityname(" 中国台湾); 

        // 状態と都市の間のメンテナンス対多の関係
        c1.getCitys()を追加します(CT1);. 
        C1.getCitys() .add(CT2); 

        dao.save(C1); 
        リターン " 成功" ; 
    } 

    // リレーショナルクエリ 
    @RequestMapping(" /はgetCountry " 
    @ResponseBody 
    パブリックオブジェクトGET (){
         戻りdao.findAll(); 
    } 

    // レベル削除ユナイテッド
    @RequestMapping(" / deleteCountry " パブリック文字列()[削除] {
         // NIE取得 
        国の一つdao.getOneを=(1。); 
        ; dao.delete(ワン)
        リターン " 成功" ; 
    } 

    // 全国の都市にリンククエリ 
    @ RequestMapping(" / getCity " 
    @ResponseBody 
    パブリックオブジェクトgetCity(){
         リターンdao1.findAll(); 
    } 

    // 生徒と教師を追加 
    RequestMapping @(" / saveStudent " 公共の文字列(){保存
        学生STUDENT1 = 新しい学生(" 利亚东哥" ); 
        学生student2 = 新しい学生(" 玉姐" ); 
        学生student3 = 新しい学生(" 雄哥" ); 

        教師T1 = 新しい教師(" 山间的风" )。
        student1.getTeachers()を追加する(T1)。
        student2.getTeachers()を追加する(T1)。
        student3.getTeachers()を追加する(T1)。
        dao2.saveAll(は、Arrays.asList(STUDENT1、student2、student3))。

        復帰 "成功を

    } 

    @RequestMapping(" / saveTeacher " パブリック文字列saveTeacher(){ 
        教師T1 = 新しい教師(" 帅的离谱" )。
        一覧 <学生>すべて= dao2.findAll(); 
        t1.getStudents()のaddAll(すべて)。
        dao3.save(T1)。
        戻る 成功を
    } 

    @RequestMapping(" / getTeacher " 
    @ResponseBody 
    パブリックオブジェクトgetTeacher(){
        リターンdao3.getOne(1 )。
    } 
}

多くの多くの

先生

@Entity 
@Table(名 = " teacherinfo " パブリック クラス教師{ 
    @Id 
    @GeneratedValue(戦略 = GenerationType.IDENTITYを)
     プライベート整数teacherid。
    プライベート文字列のteachername。
    @ManyToMany(カスケード = CascadeType.ALL)
     // mappedby属性绝对不能再存在@JoinTable和@JoinColumn注解时使用 
    @JoinTable(名前= " student_teacher "、joinColumns = @ JoinColumn(名前= " teacherid " )、
            inverseJoinColumns = @ JoinColumn (名前=" studentid " ))
     のプライベートリスト<学生>学生= 新しい ArrayListを<>();

学生

@Entity 
@Table(名 = " studentinfo " パブリック クラスの学生{ 
    @Id 
    @GeneratedValue 
    プライベート整数ID。
    プライベート文字列名;
    プライベート整数歳。
    プライベート整数のセックス。
    @Column(名前 = " stu_name "

TeacherDao

パブリック インターフェース TeacherDaoはJpaRepositoryを拡張<教師、整数> { 
}

StudentDao

パブリック インターフェース StudentDaoはJpaRepositoryを拡張<学生、整数> { 
}

StudentController

@Controller
 パブリック クラスStudentController { 

    @Autowired 
    ; StudentDAO StudentDAO 

    @Autowired 
    TeacherDao teacherDao; 

    // 生徒と教師を追加 
    RequestMapping(@ " / addstu " 
    @ResponseBody 
    公共の文字列のaddstu(){ 
        学生STUDENT1 = 新新学生("リリー" )。
        STUDENT2学生 = 新新学生(「明確に); 
        学生student3 = 新新学生(「アン);

        教師teacher1は = 新しい先生("筱丽" ); 
        。student1.getTeachers()(teacher1)を追加します。
        。student2.getTeachers()(teacher1)を追加します。
        。student3.getTeachers()(teacher1)を追加します。

        studentDao.saveAll(は、Arrays.asList(STUDENT1、student2、student3))。
        リターン SUCCESS 
    } 

    // 多对多添加老师 
    @RequestMapping(" / addDom " 
    @ResponseBody 
    パブリック文字列addDom(){ 
        教師教師 = 新しい教師(" 李老师")。
        一覧 <学生>すべて= studentDao.findAll(); 
        teacher.getStudents()のaddAll(すべて);. 
        TeacherDao.save(教師); 
        戻り値 " SUCCESS " ; 
    } 

    // 多くの関連クエリ(無限ループの注意! !!) 
    @RequestMapping(" /ます。getDOM " 
    @ResponseBody 
    パブリックオブジェクトます。getDOM(){
         戻り teacherDao.getOne(1 ); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/dabrk/p/12002926.html