给hibernate的Set增加死条件筛选

原创 2013年07月17日 17:58:16

参照Hibernate官方文档:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.html


之前用Hibernate写的系统,其中有一个大家都在公用的附件表Appendix。A模块需要的附件存在这里,B模块需要的附件也存在这里,除了存A或B或C或D...模块的ID以外,还存一个table_name字段,用来区分是A、B、C、D中的哪一个。比如id=5, table_name='B',那么就代表id为5的B模块中的附件。

作为Hibernate的Newbie,只知道用一列映射,于是当初就是这么写的:

        <set name="appendixs">
            <key>
                <column name="id"/>
            </key>
            <one-to-many class="beans.Appendix"/>
        </set>

然后再在程序里用java手动去过滤它们……= =

但是后来发现保存的时候斯巴达。保存的时候会把其他连带的也覆盖掉了。比如id为5的B的附件全删除了,我就b.setAppendixs(null); 这一写不要紧,id为5的A、C、D中的附件也全都消失了……最要命的是这项目已经在客户那边上线了,还要做大手术是风险很高的……Leader告诉我慢慢改,改了出了问题再说(囧。

我实在是不甘心,觉得应该有其他的更优雅的解决方案的才对……查来查去,在Hibernate文档里终于找到了这货,where...

        <set name="appendixs" where="table_name='B'">
            <key>
                <column name="id"/>
            </key>
            <one-to-many class="beans.Appendix"/>
        </set>

这样写死就OK了。ABCD的hbm配置文件都改一下,只需要改配置就可以了。问题解决了。

如果不是写死,而是用动态的话……貌似得用filter标签什么的,就不太了解了。Hibernate的路,我还有很长要走啊……

Python入门(三)——list和tuple,条件判断和循环,dict和set

作者:刘某人程序员 博客:http://blog.csdn.net/qq_26787115 声明:未经原作者允许请勿转载 好的,我们继续来学习python,这次我们讲容器,也就是list,我们可...

Hibrenate many-to-many映射时,用Set中元素做条件查询

一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有。查询教拥有书"a"的学生的老师: class teacher{ String id; String nam...

#Python 廖雪峰老师#Week 1_4:list和tuple/条件判断/循环/dict和set

list和tuple/条件判断/循环/dict和set

Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set

本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操...

__set/__get触发条件

__set/__get多情况讨论,因为涉及成员属性自动创建的问题,比VB中的property get/let/set要复杂 当一个对象变量(包括$this)试图引用一个难以达到的成员属性的时...

Hibernat 使用Criteria查询多对多关系(SET集合)条件

1.版块 module{   private Set moderators=new HashSet(); } 版主 moderator{ private Set modules=new H...
  • wconvey
  • wconvey
  • 2014年11月29日 10:30
  • 2437

Python入门(三)——list和tuple,条件判断和循环,dict和set

Python入门(三)——list和tuple,条件判断和循环,dict和set好的,我们继续来学习python,这次我们讲容器,也就是list,我们可以这样表示一.liststudent = ["z...

JSP-使用JSTL-out、set、remove、catch捕捉异常、条件判断、流程控制、字符截取

使用JSTL在MyEclipse2014中,使用JSTL只要在文件开始加上一句 prefix表示前缀,用于区分其他标签,可以自定义前缀。 使用JSTL可以进一步减少Scriptlet的使用。使前端页...

Tableau--使用参数为报表增加一个统计周期筛选条件(日,周,月,季度,年)

有这样一个需求:要求在报表中增加一个统计周期控件,用来控制折线图的内容是按照控件里的选项(日,周,月,季度,年)来展示的。 这里用到了参数。 方法: step1: 创建一个字符型参数,‘统计周期’。 ...

Cognos筛选条件增加全选选项

用户要求在客户筛选项里增加一个“ALL”的选项,并且默认选中。只有在需要的时候才去筛选。 实现效果如下 1.首先在Prompt的属性Static Choices内添加一个Use和D...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给hibernate的Set增加死条件筛选
举报原因:
原因补充:

(最多只允许输入30个字)