Coldfusion Hibernate-按集合内的字段值筛选结果

Coldfusion Hibernate-按集合内的字段值筛选结果,hibernate,coldfusion,coldbox,Hibernate,Coldfusion,Coldbox,我有一个具有多个字段的实体;其中一个字段是“量化”,它包含不同实体的集合 我在通过JSON返回列表的API控制器调用中查询该实体。我想根据以下条件筛选返回的结果集: 如果“quantifications”字段为空,则不要将该实体作为结果的一部分返回 如果“量化”字段不为空,则仅返回集合中所有量化实体的状态为“已批准”的实体 Coldfusion不是我非常熟悉的语言。我有以下符合第一个标准的代码: var EventCriteria = EventService.newCriteria(); Ev

我有一个具有多个字段的实体;其中一个字段是“量化”,它包含不同实体的集合

我在通过JSON返回列表的API控制器调用中查询该实体。我想根据以下条件筛选返回的结果集:

  • 如果“quantifications”字段为空,则不要将该实体作为结果的一部分返回
  • 如果“量化”字段不为空,则仅返回集合中所有量化实体的状态为“已批准”的实体
  • Coldfusion不是我非常熟悉的语言。我有以下符合第一个标准的代码:

    var EventCriteria = EventService.newCriteria();
    EventCriteria.isNotEmpty('quantifications');
    
    如何检查第二个标准?多谢各位

    编辑: 好的,我一直在尝试一些事情,我遇到了“未找到方法”错误。在下面发布代码

    if (NOT showEventsWithoutQuantifications){
        EventCriteria.isNotEmpty('quantifications');
    
        var eventStatus = eventStatusService.findWhere(entityName="EventStatus", criteria={eventStatusOrder=javaCast( "int", 150 )}); //approved
    
        // According to the Coldbox documentation, this should have worked. It doesn't.
        // var QuantificationService = quantificationService.newCriteria()
        //      .isEq("Quantification.status", eventStatus)
        //      .withProjections(property="event.eventID");
        // EventCriteria.in("eventID", QuantificationService); // .in() method not found. Why?
        // EventCriteria.add(EventCriteria.restrictions.in("eventID", QuantificationService)); // .in() method not found. Why?
    
        EventCriteria.add(wmtEventCriteria.createSubcriteria('Quantifications').isEq("status", eventStatus));  // .createSubcriteria method () method not found. Why?
    }
    
    值得一提的是,
    EventService
    继承自
    coldbox.system.orm.hibernate.VirtualEntityService
    。我还没有找到该类的代码(因为我没有为此使用本机CFIDE),但我认为这应该公开有问题的方法

    这可能是我运行的Hibernate版本的问题吗?或者可能是Coldbox的版本?

    关于“找不到方法”问题,这只是一个命名问题,部分原因是Adobe CF上的Coldbox的错误。
    在这种情况下,请使用alias方法。对于
    .in()
    ,请改用
    isIn()

    在下面页面的底部,您可以看到不同的别名。

    语言为CFML;ColdFusion就是这个产品。Coldbox是一个MVC框架。使用的ORM是Hibernate。Coldbox提供了一个关于Hibernate功能的详细说明,因此您主要需要了解这一点,而不是CFML,但是我[尝试]使用了几次Criterias,发现整个过程都很难处理-直接针对数据库编写SQL(或HQL)查询要简单得多。@PeterBoughton是的。不幸的是,我正在处理继承的代码。我想知道是否有一个
    each()
    all()
    调用可以在集合字段的条件中使用,类似于LINQ。理想情况下,我想做一些类似于
    EventCriteria.Where(x=>x.quantifications.All(y=>y.Status==true))
    ,但采用这种Coldbox格式。(该LINQ语句并不准确。)文档如下:-您可以使用
    EventCriteria.withQuantifications.isTrue(“status”)
    或使用类似的
    EventCriteria.add(EventCriteria.createSubCriteria('Quantifications').filters)
    re:“我还没有找到该类的代码”-VirtualEntityService主要只是一个包装器(但不确定这在这里是否相关-调用只是创建一个CriteriaBuilder实例)。无论如何,我不知道为什么我以前没有提到这一点,但您可能会从中得到更好的响应。不幸的是,
    isIn()
    方法也不起作用-我尝试了所有这些别名。