繁体   English   中英

在Grails Groovy域对象中访问地图

Accessing a Map in Grails Groovy domain objects

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在Grails上得到了一些非常奇怪的结果,由此我创建了一个对象并将其保存到db,可以看到通过dbconsole创建的对象,但随后无法使用动态查找器来检索它。

我的应用程序依次从队列中读取消息,先接收激活消息,然后接收一系列移动消息。 所有消息都带有一个公共的train_id字段。 我处理激活,保存激活,然后在出现移动消息时,从移动消息中提取train_id并使用它来找到持久对象。

这是代码

// from the activation
def train = new Train ()
...set attribute values here
train.save(flush: true, failOnError: true)

// then for the movement
def handleTmMessage(Map tm) {
Map body = tm["body"]
System.out.println "Movement: ${body}"
System.out.println "body[]:" + body["train_id"] + ":"
System.out.println "body.getAt:" + body.getAt("train_id") + ":"
System.out.println "Looking for train: " + body["train_id"]
String lookupId = body["train_id"]                         // <- something is wrong here
def train = Train.findByTrainUid(lookupId)               // <- This does not work
//def train = Train.findWhere(trainUid: "042H41MW14")      // <- This works !
//def train = Train.findWhere(trainUid: body["train_id"])  // <- This does not work
println train
println train.trainUid
}

这是输出Movement:

[actual_timestamp:1421261040000, auto_expected:true, correction_ind:false, current_train_id:, delay_monitoring_point:false, direction_ind:DOWN, division_code:60, event_source:AUTOMATIC, event_type:DEPARTURE, gbtt_timestamp:1421260980000, line_ind:, loc_stanox:04025, next_report_run_time:4, next_report_stanox:04010, offroute_ind:false, original_loc_stanox:, original_loc_timestamp:, planned_event_type:DEPARTURE, planned_timestamp:1421261010000, platform:, reporting_stanox:00000, route:2, timetable_variation:1, toc_id:60, train_file_address:null, train_id:042H41MW14, train_service_code:13560015, train_terminated:false, variation_status:LATE]
    body[]:042H41MW14:
    body.getAt:042H41MW14:
    Looking for train: 042H41MW14
    null
    java.lang.NullPointerException: Cannot get property 'trainUid' on null object

注意:消息使用train_id而Train对象使用trainUid

因此,我认为对地图的查找以某种方式失败了? 任何想法表示赞赏

马丁

问题暂未有回复.您可以查看右边的相关问题.
1 Grails / Groovy - 域对象 - 其属性的映射

如何在我的某个域对象上获取仅用户定义属性的键/值的映射? 问题是,如果我自己这样做,我得到我的属性加上类,metaClass,约束,闭包等... 我认为Grails可以相当容易地做到这一点,因为它在脚手架代码中的某个层次完成了吗? 我怎么能自己做? ...

2 如何在Groovy / Grails中正确保存域对象的更新

我开始触摸组织的Groovy / Grails后端,我的任务是在Document域对象上更新User 。 问题是,在从前端点击更新端点并附加了正确的参数后,后端将使用未更改的Document对象进行响应。 这是代码: 前端返回一个promise,我正在记录promise响应,它显 ...

4 在groovy脚本中调用grails 3域

我有一个groovy脚本,使用grails create-script创建。 如何从我的grails应用程序中导入域类,例如 如果我尝试这个,我就无法解析类User。 感谢帮助。 ...

5 在Grails中缓存域对象

我一直在考虑在我的Grails域对象中实现EhCache,如下所示: 我不太熟悉这个缓存机制是如何工作的,并且想知道在确定哪些域对象可以从缓存中受益时,有什么好的经验法则。 例如,很少被访问的对象...通常......? 谢谢! ...

8 地图键是否是Groovy中的对象?

我是一名Java开发人员,现在正在学习groovy但是groovy正在弄乱我的大脑,我需要帮助的东西,其中的主要内容列在这里: 在上面的代码中, inm1和int2f是Java中的常规变量,但在groovy中,它们是String Values,而不仅仅是具有String值的变量,它们实际 ...

9 grails-afterDelete()访问域属性

假定我具有以下域类及其对应的历史域类,以便自动保存对原始域对象所做的任何更改: 因此,每次创建,更新或删除Product对象时,都会创建一个新的History_Product来保存旧值。 这就像创建和更新的魅力一样。 但是,如果我想删除产品,因为那时它不工作p.properties ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM