我有一个具有多个字段的实体;其中一个字段是“量化”,它包含不同实体的集合。
我在通过 JSON 返回列表的 API 控制器调用中查询此实体。我想按以下标准过滤我返回的结果集:
- 如果“量化”字段为空,则不要将该实体作为结果的一部分返回。
- 如果“quantifications”字段不为空,则仅返回集合中所有 Quantification 实体的状态为“已批准”的实体。
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
. 我还没有找到该类的代码(因为我没有为此使用本机 CF IDE)但我想这应该公开有问题的方法......?
这可能是我正在运行的 Hibernate 版本的问题吗?或者也许是 Coldbox 的版本?