我让Neo4j在Grails 3.3.6中工作,并创建了一个简单的测试项目。它具有一个Owner和Car域对象。一个所有者可以拥有许多汽车。创建了所有者和汽车,还创建了从所有者到汽车的单向关系。
我还想创建一个从汽车到所有者的关系,belongs_to。 Grails将Neo4j关系视为域类。实际上,为节点和关系都创建了域类。节点实现grails.neo4j.Node和关系grails.neo4j.Relationship。最后一个的API在这里:http://gorm.grails.org/6.1.x/neo4j/api/grails/neo4j/Relationship.html
关系已创建,但应将其中一个重定向到显示页面,以便可以看到新创建的关系。唯一的是,在游戏的此阶段,id始终为null。我可以读取该关系的其他值,因为从2015年开始,这就像一年一样。当我加载关系列表时,新创建的关系就在其中,我可以单击链接将我带到显示视图,它可以正常工作。
这是save(BelongsTo归属于)的代码:
def save(BelongsTo belongsTo) {
if (belongsTo == null) {
notFound()
return
}
BelongsTo saved
try {
saved = belongsToService.save(belongsTo)
} catch (ValidationException e) {
respond belongsTo.errors, view:'create'
return
}
println "Since when: ${saved.sinceWhen}" // works
println "The id: ${saved.id}" // null
println "The alt id: ${saved.getId()}" // null
println "The class: ${saved.class}" //works
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'belongsTo.label', default: 'BelongsTo'), saved.getId()])
redirect action: 'show', id: saved.getId()
}
'*' { respond belongsTo, [status: CREATED] }
}
}
您将看到我什至尝试明确指出应使用从服务的保存操作返回的关系。
有什么想法可以在创建关系后尽早掌握该关系的ID,以便可以在重定向中使用它?
我没主意了。
谢谢。