zoukankan      html  css  js  c++  java
  • Hibernate 基于主键的一对一关联关系随手记

    @Test
        public void testSave()
        {
            Boss boss = new Boss();
            boss.setName("A-老板");
            
            
            Company company = new Company();
            company.setName("A-公司");
            
            boss.setCompany(company);
            company.setBoss(boss);
            
    //        //这两行代码会保存两次没有外键端的对象,基于主键映射。所以在保存时,要么先保存没有外键的一端,要么只保存有外键的一端。
            oneToOnePrimaryService.saveBoss(boss);
    //        oneToOnePrimaryService.saveCompany(company);
            
        }
        
        @Test
        public void testGet()
        {
            //有外键的一端默认使用懒加载。
    //        Boss boss = oneToOnePrimaryService.getBoss(1);
    //        System.out.println(boss.getCompany().getClass().getName());
    //        
            
            //没有外键的一端不使用懒加载,而是直接将它引用的对象使用左外连接一并查询出来。
            Company company = oneToOnePrimaryService.getCompany(1);
            System.out.println(company.getBoss().getClass().getName());
        }
        
        @Test
        public void testUpdate()
        {
            
            //没有外键列不仅有外键约束还有唯一约束,即没有外键列一端的对象不能被有外键列一端的两个对象同时指向。这样才能够实现一对一。
            Company company = oneToOnePrimaryService.getCompany(2);
            
            Boss boss = oneToOnePrimaryService.getBoss(1);
            boss.setCompany(company);
            
            //没有抛异常,但是没有更新成功
            oneToOnePrimaryService.updateBoss(boss);
        }
        
        @Test
        public void testDelete()
        {
            //基于主键映射的方式支持级联保存,但不支持级联删除。
            
            //再删除时不能先删除没有外键的一端,因为它的主键被引用。
            Boss boss = oneToOnePrimaryService.getBoss(4);
            Company company = oneToOnePrimaryService.getCompany(4);
            
    //        oneToOnePrimaryService.deleteCompany(company);
            oneToOnePrimaryService.deleteBoss(boss);
            
        }
  • 相关阅读:
    多线程(一)初步使用
    数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序
    统计数据,数据库就只有8,9,10的,而前端需要返回连续的记录
    Windows10禁用update
    C#模拟HTTP POST 请求
    C#中Equals和= =(等于号)的比较(转)
    .net framework4与其client profile版本的区别
    centos7 安装mysql
    JAVA中使用ASN.1
    使用gradle建立java application
  • 原文地址:https://www.cnblogs.com/GooPolaris/p/7919639.html
Copyright © 2011-2022 走看看