yxhzj
fashchina
2008-10-25 10:06
采纳率: 0%
浏览 327
已采纳

hibernate级联查询的问题

根据项目要求,在每个表中加了删除标志deleted_flag,删除用1标志,未删除用0标志.
在用hibernate本身的级联查询会把之前的子表已经删除的数据也检索出来.

求最好的解决方法.

[b]问题补充:[/b]
如果是一对一呢?怎么解决/
您这上面只有对集合进行
[b]问题补充:[/b]
没有其他方法了吗?把one-to-one改成one-to-many,也太奇怪了.换个角度来说,就是换了它们2者的关系了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • eyeqq
    eyeqq 2008-10-25 10:39
    已采纳

    使用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]

    点赞 评论
  • eyeqq
    eyeqq 2008-10-26 10:33

    你把one-to-one
    映射成one-to-many就行了。
    这样特殊处理一下。一般都这样做。。。

    点赞 评论
  • JakeyFeifei
    jakeyfeifei 2008-10-26 17:29

    你配置了lazy属性就OK啊!
    去我博客里有这样的关于hibernate的一些属性的文章。

    点赞 评论
  • eyeqq
    eyeqq 2008-10-27 08:48

    没有什么奇怪的,大家都这样用,你不是“求最好的解决方法. ”吗?
    一对一映射成一对多也是大家一至推推荐的做法,从你的操作上面还有从你的效果方面都是最佳选择。

    其它方法就是写HQL了。没别的窍门了。

    点赞 评论
  • eyeqq
    eyeqq 2008-10-27 09:09

    还有一个方法。
    刚同事跟我讲的。
    可以在hbm.xml的里面写一个where。这个属性是有的。然后你可以写sql/hql(不记得是写哪个了)。这样就可以过滤了。
    你的where写在子类就好。
    你试试吧。

    点赞 评论
  • sleepbuger
    sleepbuger 2008-10-29 00:08

    增加where条件或者设置filter

    点赞 评论

相关推荐