最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

cascade級(jí)聯(lián)關(guān)系操作案例詳解

 更新時(shí)間:2022年07月19日 11:50:42   作者:過期可樂  
這篇文章主要介紹了cascade級(jí)聯(lián)關(guān)系,主要包括級(jí)聯(lián)保存,級(jí)聯(lián)修改,級(jí)聯(lián)刪除案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

屬性

  • CascadeType.REFRESH:級(jí)聯(lián)刷新,當(dāng)多個(gè)用戶同時(shí)作操作一個(gè)實(shí)體,為了用戶取到的數(shù)據(jù)是實(shí)時(shí)的,在用實(shí)體中的數(shù)據(jù)之前就可以調(diào)用一下refresh()方法

  • CascadeType.REMOVE:級(jí)聯(lián)刪除,當(dāng)調(diào)用remove()方法刪除Order實(shí)體時(shí)會(huì)先級(jí)聯(lián)刪除OrderItem的相關(guān)數(shù)據(jù)

  • CascadeType.MERGE:級(jí)聯(lián)更新,當(dāng)調(diào)用了Merge()方法,如果Order中的數(shù)據(jù)改變了會(huì)相應(yīng)的更新OrderItem中的數(shù)據(jù)

  • CascadeType.PERSIST:級(jí)聯(lián)保存,當(dāng)調(diào)用了Persist() 方法,會(huì)級(jí)聯(lián)保存相應(yīng)的數(shù)據(jù)

  • CascadeType.DETACH:級(jí)聯(lián)脫管/游離操作,如果你要?jiǎng)h除一個(gè)實(shí)體,但是它有外鍵無(wú)法刪除,你就需要這個(gè)級(jí)聯(lián)權(quán)限了。它會(huì)撤銷所有相關(guān)的外鍵關(guān)聯(lián)。

CascadeType.ALL:包含以上所有級(jí)聯(lián)屬性

級(jí)聯(lián)保存,級(jí)聯(lián)修改,級(jí)聯(lián)刪除案例

//學(xué)校類
@Table(name = "t_school")
@Entity
@Getter
@Setter
public class School extends BaseEntity {
    private String name;
    @JsonIgnore
    @OneToMany(mappedBy = "school", cascade = {CascadeType.REFRESH, CascadeType.REMOVE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
    private List<Student> students = new ArrayList<>();
    //手動(dòng)構(gòu)造添加學(xué)生的方法
    public void addStudent(Student stu){
        if(!students.contains(stu)){
            stu.setSchool(this);    //設(shè)置學(xué)校
            this.students.add(stu);    //添加
        }
    }
    //重寫equals和hashCode方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        School school = (School) o;
        return Objects.equals(name, school.name) &&
                Objects.equals(students, school.students);
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, students);
    }
}
//學(xué)生類
@Table(name = "t_student")
@Entity
@Getter
@Setter
public class Student extends BaseEntity {
    private String name;
    private String age;
    @ManyToOne(cascade = CascadeType.REFRESH,optional = false)
    @JoinColumn(name = "SCHOOL_ID")
    private School school;
}
//測(cè)試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class SchoolDaoTest {
    @Autowired
    private SchoolDao schoolDao;
    @PersistenceContext
    private EntityManager em;
    @Test
    public void testSave() {
        School school = new School();
        school.setName("學(xué)校1");
        Student student1 = new Student();
        student1.setAge("18");
        student1.setName("張三");
        Student student2 = new Student();
        student2.setAge("18");
        student2.setName("李四");
        school.addStudent(student1);
        school.addStudent(student2);
        //經(jīng)過測(cè)試,用save方法也是可以的
        schoolDao.saveAndFlush(school);        //這個(gè)方法dao類需要去繼承JpaRepository
    }
    @Test
    public void testDel() {
        schoolDao.deleteById(1365157538168864L);
    }
  /**
   * 級(jí)聯(lián)更新
   */
  @Test
  public void testMerge(){
      Optional<School> rs = schoolDao.findById(1365164498616352L);
      School school = rs.isPresent()? rs.get() : null;
      if(school != null){
          school.setName("學(xué)校2");
          List<Student> students = school.getStudents();
          if(students != null && students.size() > 0){
              for (Student student : students) {
                  student.setName("改名字");
              }
          }
          school.setStudents(students);
          schoolDao.save(school);
      }
  }
} 
經(jīng)過測(cè)試,在保存school的時(shí)候會(huì)一起把student一起保存,級(jí)聯(lián)保存 刪除學(xué)校會(huì)把級(jí)聯(lián)的student一起刪除
級(jí)聯(lián)更新
`cascade`屬性加上`CascadeType.MERGE`,注意:不能和懶加載一起使用,正確加載方式:fetch = FetchType.EAGER

到此這篇關(guān)于cascade級(jí)聯(lián)關(guān)系的文章就介紹到這了,更多相關(guān)cascade級(jí)聯(lián)關(guān)系內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

高唐县| 西乌珠穆沁旗| 满洲里市| 文水县| 昭通市| 布拖县| 黎城县| 和平县| 濮阳市| 定兴县| 郁南县| 黄山市| 东至县| 门源| 屯留县| 天水市| 博客| 莎车县| 犍为县| 双牌县| 林州市| 神农架林区| 徐州市| 太和县| 邢台市| 同心县| 湘乡市| 基隆市| 荔浦县| 东城区| 麻江县| 大田县| 潞城市| 乐清市| 清原| 淮南市| 静海县| 青海省| 罗田县| 泽州县| 泰来县|