我有一个有多个字段的实体;其中一个领域是“量化”,它包含不同实体的集合。
我在API控制器调用中查询此实体,该调用通过JSON返回列表。我想通过以下标准过滤我返回的结果集:
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的版本?
答案 0 :(得分:0)
关于“找不到方法”的问题,它只是一个命名问题,部分是来自Adobe CF上ColdBox的错误。
在这种情况下,请使用别名方法。对于.in()
,请改用isIn()
。
在下面的页面底部,您可以看到不同的别名。 https://github.com/ColdBox/coldbox-platform/blob/master/system/orm/hibernate/criterion/Restrictions.cfc