利用Hibernate对未做级联关系的表进行连接查询

目前存在的问题:

1. 最初我希望将CmParent和CmChild中的记录全部set入一个包含双方数据属性的普通VO中, 结果失败.
2. Object[] 的length必然是和希望封装成POJO的对象个数是匹配的, 如果通过连接查询, 子表中无记录, 则被set为null.
3. 还是希望能通过HQL实现类似功能.

新建两个表:

sql 代码
  1. -- Create table CM_PARENT   
  2. create table CM_PARENT   
  3. (   
  4.   ID   NUMBER not null,   
  5.   NAME VARCHAR2(20)   
  6. );   
  7. alter table CM_PARENT   
  8.   add constraint CPP primary key (ID);   
  9.   
  10. -- Create table CM_CHILD   
  11. create table CM_CHILD   
  12. (   
  13.   ID       NUMBER not null,   
  14.   NAME     VARCHAR2(20),   
  15.   PARENTID VARCHAR2(20)   
  16. );   
  17. alter table CM_CHILD   
  18.   add constraint CCP primary key (ID);  

向其中插入测试数据:

sql 代码
  1. insert into CM_PARENT (ID, NAME) values (1, 'como');   
  2. insert into CM_PARENT (ID, NAME) values (2, 'chenmeng');   
  3. insert into CM_CHILD (ID, NAME, PARENTID) values (1, 'como son1', '1');   
  4. insert into CM_CHILD (ID, NAME, PARENTID) values (2, 'como son2', '1');  

执行左外连接查询:

sql 代码
  1. select * from cm_parent cp left outer join cm_child cc on cp.id = cc.parentid  

将获得:

sql 代码
  1. ID NAME                         ID NAME                 PARENTID   
  2. -- -------------------- ---------- -------------------- --------------------   
  3.  1 como                          1 como son1            1   
  4.  1 como                          2 como son2            1   
  5.  2 chenmeng                                               

但是在Hibernate中, 如果两个表未做级联,则采用HQL尝试连接查询时会报:

java 代码
  1. org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!  

但是经过试验, 这种情况可以通过Hibernate的SQLQuery折衷解决. 方法如下:

1.对这两个表建立POJO及HBM, 过程略.

2.在DAO中加入方法:

java 代码
  1. public List executeSQLFind(final String sql, final String[] alias, final Class[] clasz) throws DaoException {   
  2.         Session session = getHibernateTemplate().getSessionFactory().openSession();   
  3.         SQLQuery realQuery = session.createSQLQuery(sql);   
  4.         for(int i=0; i
  5.             realQuery.addEntity(alias[i], clasz[i]);   
  6.         }   
  7.         List dataList = realQuery.list();   
  8.         return dataList;   
  9.            
  10.     }  

 在Service层调用:

java 代码
  1. String sql = "select {cp.*}, {cc.*} from cm_parent cp left outer join cm_child cc on cp.id = cc.parentid";
  2. String[] alias = new String[]{"cp","cc"};   
  3. Class[] clasz = new Class[]{CmParent.class, CmChild.class};   
  4. List b = baseDao.executeSQLFind(sql, alias, clasz);  

返回的b为一个元素类型为Object[]的List. 测试如下:

java 代码
  1. for (int i = 0; i < b.size(); i++) {   
  2.     Object[] o = (Object[]) b.get(i);   
  3.     logger.info("CmParent No.#" + i + " == " + ((CmParent)o[0]).getName());   
  4.     if(null != o[1]) {   
  5.         logger.info("CmChild No.#" + i + " == " + ((CmChild)o[1]).getName());   
  6.     } else {   
  7.         logger.info("CmChild No.#" + i + " == NULL");   
  8.     }   
  9. }  

其中的o[0]为封装好的CmParent, o[1]为封装好的CmChild. 如图:

 

Hibernate的多表关联关系映射、案例:一对多、多对一查询与删除、cascade级联保存、修改、删除、级联组合、案例:多对多、级联保存与外键维护、fetch、批量加载、检测策略-day03 目录第一节 Hibernate的多表关联关系映射1.1 多表关系1.2 案例:一对多、多对一第一步:实体类的编写第二步:映射文件的编写第三步:配置文件添加映射第四步:单元测试设置外键维护的方式查询一对多与删除 第一节 Hibernate的多表关联关系映射 1.1 多表关系 表之间关系存在3种:一对多、多对多、一对一 一对多:主表的主键 与 从表外键 形成 主外键关系 多对多:提供中间表(从表),提供2个字段(外键)分别对应两个主表。 一对一: 主外键关系 举例: 多对多关系:老师与学生 一对 阅读详情

相关推荐

Hibernate @OneToMany 及 @Cascade级联操作

前言 由图中可以看出实体间关系:一对多(@OneToMany) 在实际开发场景中,删除员工老板不会被删除,老板被删除了员工肯定要删除 由此,就会使用级联操作,在一对多关系中,@Cascade属性(级联)只设置“一”的一方即可,外键由“多”的一方进行维护。 @ManyToOne和@OneToMany 注解 ManyToOne(多对一)单向:不产生中间表,但可以用@Joincolumn...

weixin_40361910的博客 965

Hibernate-没有外键关联的两个表做联合查询

有两个表Zsplcxxb(流程表)和Lcsplsb(流程审批历史表),两个表都有lcbh(流程编号),但是没有设置外键关联,做以下的查询: from Zsplcxxb as a inner join Lcsplsb as b on a.lczbh = b.lczbh and b.blrbh='' and b.blrbh != a.sqrbh and a.clrbh != '' order by

鲲鹏宇飞(RocFly) 1万+

Java 里 Hibernate 的多表关联查询实战

本文旨在为 Java 开发者提供全面的 Hibernate 多表关联查询实战指南。实体间的各种关联关系映射不同查询方式的实现和比较关联查询的性能优化策略N+1 查询问题的解决方案复杂查询的构建技巧首先介绍 Hibernate 多表关联的基本概念和类型然后详细讲解各种关联映射的实现方式接着探讨不同查询方法的具体应用最后分析性能优化策略和实际应用案例: 对象关系映射,一种将面向对象语言中的对象与关系数据库中的表进行转换的技术实体(Entity)

AI开发架构师 1390

Hibernate中用left join(左外连接)查询映射中没有关联关系的两个表记录问题

一、问题背景分账表split_summary结构如下:create table SPLIT_SUMMARY ( uuid VARCHAR2(32) not null, star_tdate VARCHAR2(26) default '', end_date VARCHAR2(26) default '', sto

honghailiang的专栏 3万+

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3414

UE4-(蓝图)第五十五课图片九宫格拉伸的使用

一、为什么使用九宫格拉伸 在UI布局的时候,有时候使用的图片与我们要制作的UI大小有差距,如果图片是普通方式直接拉伸很可能造成图片四个角上的效果与原图片差距太大甚至是变形,这时候使用九宫格模式拉伸,可以保持图片四个角上的样式不发生改变,只对中间区域拉伸。 原始 正常拉伸: 九宫格拉伸: 二、图片参数设置 1.新建一个UI 控件蓝图,在CanvasPanel下拖入一个Image,选择一张...

Stone的博客 7889

hibernate中如何实现两个无关系表的左联的问题

前两天作项目的时候发现的这个问题,先容我详细描述一下问题所在!现有应用表:A(ACD,CD)MASTER表:B(BCD,BNM);C(CCD,CNM)需求是这样的:当A表中的ACD>1000时,用CD到B表查询BNM,反之到C表查询CNM。所以,在A的mapping里不能设置A表与B或C表的关系。问题就在这里,在hibernate里无关联的表用hql语句只能实现内联,无法实现左联。我看了好多论坛都

SML的专栏 2570

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2124

Spring Hibernate JPA 联表查询 复杂查询

今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是。如果hibernate认为jpa的注解够用,就直接用。否则会弄一个自己的出来作为补充。 2)jpa和hibernate都提供了Entity,我们应该用哪个,还是说可以两个一起用? Hibernate的Entity是继承了jpa的,所以如果觉得jpa的不够用,直接使用hibernate的即可 正...

weixin_30360497的博客 1707

小红书UID泄露风险揭秘:如何防止你的手机号被社工库关联(附防护指南)

本文揭示了小红书UID泄露的严重风险,详细解析了UID与手机号关联后被社工库利用的完整链条。通过分析黑产的数据整合技术,提供从基础到进阶的防护策略,包括密码管理、账号隔离和应急响应措施,帮助用户有效防范个人信息泄露风险。

ol789012345的博客 1505

绕过Google Play:获取Expo Go安卓APK的实用指南

本文为国内安卓开发者提供了绕过Google Play商店获取Expo Go APK的实用指南。针对无法访问Google Play的痛点,详细介绍了通过官方GitHub Releases、可信第三方网站(如APKMirror)及APK下载器等多种安全获取途径,并重点讲解了APK安装、安全验证(核对签名)及常见连接问题的排查方法,帮助开发者顺利开启React Native开发之旅。

weixin_29006701的博客 577

第一次做项目碰到的一个坑之left outer join 左外连接

这段时间在做一个叫“香港自由行”的项目,是一个旅游网站。我负责的模块是景点页面,主要是星级评分、评论、查附件5个景点。功能很简单,做的时候也没啥大问题。 但是,某天,在我提交确认无误提交后,发现另外一人做的上传景点功能一直报500。遂找了那位队友问了一下,原来是他之前改了数据库表的两个字段的类型但是我没更新么,于是删了数据库表更新跑了一下项目……然后问题就这么来了 查询景点评论的时候每条评论都

Truth 2423

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1620

Hibernate的级联查询和添加的分析

Hibernate的级联查询和添加的分析 昨天有同学问我,级联添加怎么做,我写过级联查询,但是级联添加,怎么做呢?怎么配置呢?昨天晚上就写了试试,然后分享给大家。拿学生表和系别表来说。先看数据库配置 首先是学生表studdent 学生表的depid是作为student的外键,主键是id, 下面是系别表department 这个没什么好说的。 新建工程,然后进行两...

zhupengqq的博客 234

【SystemVerilog基础】SystemVerilog Assertion 概述

断言主要是描述复杂的设计行为;是传统验证方法学一个很好的补充,可以检查到电路内部细节,相当于一种白盒验证,传统的验证方法学是纯粹的黑盒验证!property跟上面的sequence差别不大,唯一有差别可能多了两个implication(|->,|=>)注意,当有前置条件时,不满足前置条件不会fail,而是伪真!上面这个因为没有前置条件,每个周期都会去检查!注意:当没有前置条件时,不满足条件会直接fail!

MoorePlus的博客 332

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3780

hibernate基础之多表查询

hibernate完成一对多关联映射: 一对多的建表原则:在多的一方创建外键指向一的一方的主键 多对多建表原则:创建一个中间表,中间表至少有两个字段分别作为外键指向多对多双方的主键 一对一的建表原则:一方的主键作为另一方的主键 hibernate是一个ORM的框架:在关系型数据库中描述表与表之间的关系,使用的是外键,开发语言是Java,面向对象的。 一的一方映射的创建: <!-- 配置一...

LetonLIU的博客 2553

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Hibernate多表关联——(一对多关系)

hibernate是连接数据库使得更容易操作数据库数据的一个框架,在上期我们演示了单表建立查询。接触过数据库的都知道数据库表有三种关系,。而接下来我们在hibernate中建立关系,首先应该检查一下数据库是否打开,根据,接下来继续建立表的关系。

闲来垂钓碧溪上的博客 2415

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

8、Hibernate多表关系级联映射

一.表与表的多表关系 【一对多】 建表原则:在多的一方创建外键指向一的一方 【多对多】 建表原则:创建一个中间表,中间表中至少有两个字段作为外键分别指向多对多双方表的主键。 【一对一】 建表原则有两种 一种:唯一外键对应:假设一对一种的任意方,在多的一方创建外键指向一的一方的主键,然后将外键设 置为唯一。 二种:主键对应:一方的主键作为另一方的外键 。 二.对象描述表的关系 所谓关联映射就是...

weixin_40646763的博客 255

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hibernate的中的查询与级联操作

1.Criteria查询接口适用于组合多个限制条件来搜索一个查询集。 要使用Criteria,需要遵循以下步骤: *创建查询接口: Criteria criteria=session.createCriteria(User.class); *设置查询条件: criteria.add(Restrictions.gt(“age”,10); *查询数据: List...

a55684471的博客 453

Hibernate级联查询实体关系映射

Hibernate  实体关系映射 4.  使用 MyEclipse 的 的 反向 工程 向导 生成 关系 DB Browser 中的表中右击-->Hibernate reverse Engineering... 选择所选择表的主键生成方式,如图中进行配置,选择 native:

zhupengqq的博客 1273

hibernate的三种状态和表的关系

hibernate有 持久态,游离态,自由态 表的关系:一对一,一对多,多对多 持久态:session空间中有这个对象(该对象纳入了session的管理范围),数据库中有与之对应的数据 持久态的数据 对象中的属性值与数据库中的数据保持一致 ,如果不一致会发生同步更新 发送修改语句 自由态:session空间中没有这个对象(该对象没有纳入了session的管理范围),...

weixin_45357829的博客 258

Hibernate级联保存和更新

级联保存和更新当Hibernate持久化一个临时对象时,在默认情下,他不会自动持久化所关联的其他临时对象,如果希望当持久化对象时把他所关联的所有临时对象进行持久化的话:可以把 的cascade属性设置为"save-update" ,cascade的默认属性值为none。cascade:设置操作对象时的级联操作,即层级之间的连锁操作值 save-update :表示当保存和更新当前对象(即inser

银狐的专栏 7875

hibernate 之 表与表之间的关系

表与表之间的关系 一对多 商品和商品类别(一个类别有多个商品) 客户和联系人属于一对多的关系 外键添加在多的一方 多对多 订单和商品关系(一个订单里面有多个商品,一个商品属于多个订单) 用户和角色属于多对多关系 多对多建表,需要创建第三张表(至少有两个字段作为外键,指向两个表的主键) 一对一 妻子和丈夫 hibernate一对多操作 (1)一对多映射配置 第一步:创建实体类,客户和联系人 第二部:让两个实体类之间互相表示 (1)在客户实体类里面表示多个联系人 //h

weixin_41974635的博客 340
上一篇: 一个不错的log4j配置
下一篇: Eclipse 运行命令行参数大全
como
博客等级 码龄25年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值