在many-to-many/one-to-many中有这样的常规需求:删除一端时只删除对应的关系和本身,当然这个需求在硬编码中实现起来是方便的,但是当在框架中实现,希望得到最高程度的重用的时候,就会遇到一些小麻烦。FitU-Thinking已经解决了这个问题。
以FitU中的app为例(相关代码可以参考),三个Model: Role, UserGroup, User. Role和UserGroup之间存在one-to-many的关系;UserGroup和User之间存在many-to-many的关系。Fitu的CRUD是可以重用,不同的UseCase可以不必写这些累赘的代码。
先说明Role和UserGroup。我们方便的实现了新增,修改,以及关联,甚至是对UserGroup的删除,但是在我们删除Role的时候遇到了FK问题,当我们将cascade配置成All的时候,删除Role会将其下相关的UserGroup删除,但是往往用户并不希望删除UserGroup,所以单纯的remove(clazz, id)没有办法满足到这种需求,所以扩展了一下:remove(model, id, {"groups", "role"}),只是在Action中必须重新实现remove(要多写几行代码)。
UserGroup和User也是类似的在级联删除的时候遇到了问题,关系是由UserGroup维护的,当删除UserGroup时会自动的将其和User的关系断开,但是当删除User的时候,FK异常又出现了,当然我必须满足级联更新和保存。此时也是需要重新实现remove方法的。
这种先断开关系,再删除对象的功能在Hibernate中实现起来是这样:找出Model中的关系对象集,然后遍历关系对象集将其中的model对象(或对象集)设空,这样就实现了关系断开,然后再调用remove(modelClass, id),就可以将Model删除了,而不会遇到FK冲突。详细实现可以参看ThinkingService.
分享到:
相关推荐
\hibernate_配置cascade_及all-delete-orphan.doc
cascade-MVSNet——CVPR-202(源码、原文、译文) cascade-MVSNet——CVPR-202(源码、原文、译文) cascade-MVSNet——CVPR-202(源码、原文、译文) cascade-MVSNet——CVPR-202(源码、原文、译文) cascade-...
资源来自pypi官网。 资源全名:django-postgres-delete-cascade-2.0a1.tar.gz
opencv识别车牌haarcascade-licence-plate-rus-16stages.xml
计算射频链路的级联特性,计算射频接收和发射的链路计算,包括噪声系数、架构设计、指标分解、电路、增益设计等。
Real-time vehicle detection with foreground-based cascade classifier
Free~, "opencv安装目录"\sources\data\haarcascades\"你想要的都有" 相应的还有lbp,当然实际生活场景这些官方提供的,效果都不好,请自行训练! haar的误检测率很高! lbp误检测高不说,框的方式也不好,不适合...
haarcascade_eye_tree_eyeglasses.xml OpenVC haarcascade_frontalcatface.xml haarcascade_frontalcatface_extended.xml haarcascade_frontalface_alt.xml haarcascade_frontalface_alt_tree.xml haarcascade_...
Ajax-Cascade-Ajax-Select.zip,这是一个现成的html/jquery源代码,演示了如何构建基于ajax的级联选择。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建...
级联式无刷双馈发电机的仿真研究Cascade brushless doubly-fed generator simulation
haarcascade-frontalface-alt人脸识别分类器文件
lbpcascade_frontalface.xml 和 haarcascade_eye_tree_eyeglasses.xml 是 OpenCV 中的人脸和眼睛识别分类器。lbpcascade_frontalface.xml 是基于 Local Binary Patterns (LBP) 算法的人脸识别分类器,可以用来检测...
深入理解hibernate many-to-one(多对一)及 cascade(级联).
在本节中,描述了Cascade Trainer GUI的不同部分和功能。请注意,通过将鼠标移到图形界面上的每个元素,您将在底部状态栏上获得对其的简短描述。 首次启动Cascade Trainer GUI时,将显示以下屏幕。这是开始屏幕,...
以前用Sql Server只会对图形界面进行操作,现在发现自己的Sql语言功底是越来越差了,例如如何为两个表添加关联,让他们级联更新和级联 删除。 到晚上查了一下,发现可以用两... ) ON Update CASCADE ON Delete CASCADE
CMOS Cascade Sigma-Delta Modulators for Sensors and Telecom
haarcascade_eye_tree_eyeglasses.xml_haarcascadeeyetree
串级控制系统实例程序,适合于初学者!!!!!!!!!!!!
OpenCV人脸识别文件haarcascade-frontalface-default.xml
eguid专栏中javacv进阶opencv图像处理和图像识别专栏文章使用的基于haar级联分类的正面人脸特征检测