Grails中的Neo4j获得新创建的关系ID

时间:2018-07-14 12:10:35

标签: grails neo4j relationship

我让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,以便可以在重定向中使用它?

我没主意了。

谢谢。

0 个答案:

没有答案