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();
    }

    }

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


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

    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    SpringBoot初识日志
    SpringBoot配置文件(2)
    SpringBoot配置文件(1)
    java8新特性之stream流
    java8新特性之Lambda表达式
    Java入门——第一个Java程序HelloWorld(Dos命令窗口)
    Invalid bound statement (not found): com.xxx.xxx.dao.ShopMapper.insertShop
    2019总结过去,规划未来
    进程和线程的区别
    python(tuple元组、scalar types:数字类型、字符类型、类型转换)
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/5483165.html
Copyright © 2011-2022 走看看