Grails-在不获取整个对象的情况下获取域关系id

Grails-在不获取整个对象的情况下获取域关系id,grails,groovy,gorm,Grails,Groovy,Gorm,例如,我有以下域对象: class A { B b static constraints = { b nullable: true } } class B { } 给定A的实例,我只想获取B的id 我尝试了以下操作,但每次都收到空值: def id = a.bId 是否可以在不执行a.b.id的情况下获取b的id?您需要增强您的域以使用基于GORM的映射提示(提供给Hibernate)来完成此操作 您的域可能如下所示: class A { static

例如,我有以下域对象:

class A {
   B b

static constraints = {
        b nullable: true
    }
}

class B {
}
给定A的实例,我只想获取B的id

我尝试了以下操作,但每次都收到空值:

def id = a.bId

是否可以在不执行a.b.id的情况下获取b的id?

您需要增强您的域以使用基于GORM的映射提示(提供给Hibernate)来完成此操作

您的域可能如下所示:

class A {
  static hasOne = [b: B]
}

class B {
  // stuff
}
使用
hasOne
将允许Hibernate管理关联,从而允许您使用
a.bId
符号


希望这能有所帮助。

好的,我的问题是A包含对另一个A的引用(类似于链表)。在这种情况下,它似乎根本不起作用。您问题中的示例是否更新以反映您的实际情况?同样,除非您对GORM/Hibernate使用某种类型的提示,否则它将无法只加载id(实际上只加载具有id的代理,但这并不重要)。唯一的其他解决方案是编写一个使用projections/hql返回原始id的特定查询。