栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate条件查询收集表?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate条件查询收集表?

抱歉,Hibernate不支持您要执行的操作。请参阅以下常见问题解答:

http://community.jboss.org/wiki/HibernateFAQ-
AdvancedProblems#Im_getting_orghibernateMappingException_collection_was_not_an_association_when_I_try_to_join_a_collection_of_components_with_Criteria_queries

我对此也很不满意。但是,正如您所看到的,他们已经尝试修复它,但一直未能做到,并已将其发布给社区以对其进行处理。您有几种选择:

  1. 使用HQL运行查询。
  2. 用单个Enum字段将集合关联重新编写为实际的实体类。

您可以执行以下操作:

 @Entity public class ActionWrapper {      public Action action; }

然后,更新您的关联并进行相应的查询,以使其

Rule
具有
Set<ActionWrapper>
。还有其他解决方法,但是您基本上不能同时使用
Criteria
@ElementCollection

更新资料

为了进一步限制查询,以确保您获得满足两个动作的规则,您需要运行子查询并对匹配值进行“和”运算。这样的事情应该起作用:

 Criteria subCriteria = criteria.createCriteria("ruleActions"); Disjunction and = Restrictions.conjunction(); for (Action a : act)    and.add(Restrictions.eq("action", a) subCriteria.add(and);

最后,您可能会发现重复的结果。这很常见,可以通过添加以下内容来消除:

 criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

我不能说这段代码的效率-从长远来看,HQL可能更好。但是,我在其他项目中也做过类似的事情,没有遇到任何问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号