zoukankan      html  css  js  c++  java
  • hibernate 多对一(级联)操作

    级联:当你存储一个表的内容想值得相关联的表也存储数据时,可以通过级联来实现(cascade)
    @Entity
    @Table(name="t_User")
    public class User {
    private int id;
    private String name;
    private Grup grup;
    @ManyToOne(cascade={CascadeType.ALL})
    //all:意为级联全部,牵一发而动全身,只要是其中一个表进行数据库操作,另一个也会跟着进行操作
    public Grup getGrup() {
    return grup;
    }
    public void setGrup(Grup string) {
    this.grup = string;
    }
    @Id
    @GeneratedValue
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public User(int id, String name) {
    super();
    this.id = id;
    this.name = name;
    }
    public User() {
    }
    }


    test单元测试:按道理,可以分别存储user和grup的内容,但是结果不是这样的,grup的内容是空值,这时级联就登上表演舞台
    public class ManyToOneTest {
    @Test
    public void testSaveUser() {
    User u = new User();
    u.setName("Judy");
    Grup g =new Grup();
    g.setName("Linda");
    u.setGrup(g);;
    @SuppressWarnings("deprecation")
    SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    Session session =sessionFactory.getCurrentSession();
    session.beginTransaction();
    session.save(u);
    session.getTransaction().commit();
    }

    }

    由结果可知,数据已经插入到对应的表中


    注意:级联只是可以让写程序的人在操作过程中较为省事,但是并非必需要用到,如果想要把多表的数据内容分先后顺序,完全可以手动存储,不用级联操作。

    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    洛谷 P1032 子串变换
    RCTF 2017 easyre153
    SUCTF 2016 : dMd
    南邮 base64全家桶
    洛谷 P1908 逆序对
    2019中山大学程序设计竞赛 Triangle
    WhiteHat Contest 11 : re1100
    P1010 幂次方
    洛谷 P1088 火星人
    南邮 骚年来一发吗
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/5483165.html
Copyright © 2011-2022 走看看