【问题标题】:Is the use of findByUsername allowed on a subclass of User domain in GORMGORM 中用户域的子类是否允许使用 findByUsername
【发布时间】:2015-10-28 20:03:32
【问题描述】:

我有一个用户域类

class User {
String username
String password
}

class Patient extends User {
String something
}

在控制器中我正在做一个

def patient = Patient.findByUsername("me")

为此,我在患者身上得到了一个空对象。

通过用户名查找患者的正确方法是什么?

【问题讨论】:

  • User.findByUsername("me") 返回User?
  • 是的......它确实返回了一个用户
  • 您是否尝试过一个条件或 where 查询? Patient.withCriteria { eq('username', 'me') }Patient.where { username == 'me' }.list()

标签: grails grails-orm


【解决方案1】:

Patient.findBy.... 返回一个 Patient 对象 User.findBy 返回一个 User 对象 + Patient 对象。 grails 中的继承映射在同一个表中。当您在域类中使用继承时,Gorm 使用名为“类”的特定列。通过这种方式,您可以使用具有继承的动态查找器并检索您需要的子类域。 因此,您可以使用动态查找器来查找具有除 id 列之外的任何列的任何对象。如果您通过 id 搜索任何对象,则必须使用 User.get(id) 或 User.load(id)。

【讨论】:

    【解决方案2】:

    您使用的是哪个版本的 Grails?使用用户域查询而不是患者域查询获取记录应该没有任何理由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2016-12-29
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      相关资源
      最近更新 更多