根据项目要求,在每个表中加了删除标志deleted_flag,删除用1标志,未删除用0标志.
在用hibernate本身的级联查询会把之前的子表已经删除的数据也检索出来.
求最好的解决方法.
[b]问题补充:[/b]
如果是一对一呢?怎么解决/
您这上面只有对集合进行
[b]问题补充:[/b]
没有其他方法了吗?把one-to-one改成one-to-many,也太奇怪了.换个角度来说,就是换了它们2者的关系了
使用Filter
[quote]http://www.qqgb.com/Program/Java/JavaJC/Program_158788.html[/quote]
[code="xml"] [/code]
[code="java"]Session session = ...;session.enabledFilter("effectiveDate").setParameter("asOfDate", new Date());List results = session.createQuery("from Employee as e where e.salary > :targetSalary").setLong("targetSalary", new Long(1000000)).list();
[/code]
你把one-to-one
映射成one-to-many就行了。
这样特殊处理一下。一般都这样做。。。
你配置了lazy属性就OK啊!
去我博客里有这样的关于hibernate的一些属性的文章。
没有什么奇怪的,大家都这样用,你不是“求最好的解决方法. ”吗?
一对一映射成一对多也是大家一至推推荐的做法,从你的操作上面还有从你的效果方面都是最佳选择。
其它方法就是写HQL了。没别的窍门了。
还有一个方法。
刚同事跟我讲的。
可以在hbm.xml的里面写一个where。这个属性是有的。然后你可以写sql/hql(不记得是写哪个了)。这样就可以过滤了。
你的where写在子类就好。
你试试吧。
增加where条件或者设置filter