GORM在Grails之外冬眠

GORM在Grails之外冬眠,grails,dynamic-finders,Grails,Dynamic Finders,从一个演示如何在Grails之外使用GORM的示例开始,我尝试使用动态查找器,以便可以根据特定域对象的一个属性查找它。在本例中,groovy中有一个person对象: package domain import grails.gorm.annotation.Entity import org.grails.datastore.gorm.GormEntity @Entity class Person implements GormEntity<Person> { Stri

从一个演示如何在Grails之外使用GORM的示例开始,我尝试使用动态查找器,以便可以根据特定域对象的一个属性查找它。在本例中,groovy中有一个person对象:

package domain

import grails.gorm.annotation.Entity
import org.grails.datastore.gorm.GormEntity

@Entity
class Person implements GormEntity<Person> {

    String firstName
    String lastName

    static mapping = {
        firstName blank: false
        lastName blank: false
    }
}
我在运行测试时遇到此错误:

domain.PersonSpec > person can be found by last name FAILED
    groovy.lang.MissingMethodException at PersonSpec.groovy:32
上面的测试方法成功地创建并保存了个人记录,因此GORM功能的某些方面正在发挥作用。但是动态查找器功能在运行时没有被正确应用,即使编译器认为一切看起来都很好

我的整个身材是这样的:

apply plugin: 'groovy'

repositories {
    jcenter()
}

dependencies {
   compile "org.hibernate:hibernate-validator:5.3.4.Final"
   compile "org.grails:grails-datastore-gorm-hibernate5:7.0.0.RELEASE"
   runtime "com.h2database:h2:1.4.192"
   runtime "org.apache.tomcat:tomcat-jdbc:8.5.0"
   runtime "org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.0"
   runtime "org.slf4j:slf4j-api:1.7.10"

   testCompile 'org.spockframework:spock-core:1.1-groovy-2.4'
}

有人知道我遗漏了什么吗?

所以我已经为此挣扎了几天,你难道不知道我一发布这个问题,我就几乎立刻明白了吗。很简单——我需要在Person对象上静态使用findByLastName方法,而不是Person实例。在PersonSpec中工作的代码现在如下所示:

   @Rollback
   def "person can be found by last name"() {
      when:
      def p = new Person(firstName: 'Scott', lastName: 'Ericsson')
      p.save(flush: true)

      def foundPerson = Person.findByLastName('Ericsson')

      then:
      foundPerson.firstName == 'Scott'
   }

我已经为此挣扎了好几天了,你难道不知道我一发布这个问题,我就马上明白了吗。很简单——我需要在Person对象上静态使用findByLastName方法,而不是Person实例。在PersonSpec中工作的代码现在如下所示:

   @Rollback
   def "person can be found by last name"() {
      when:
      def p = new Person(firstName: 'Scott', lastName: 'Ericsson')
      p.save(flush: true)

      def foundPerson = Person.findByLastName('Ericsson')

      then:
      foundPerson.firstName == 'Scott'
   }

添加“testCompile”org.grails:grails数据存储gorm-test:7.0.0.RELEASE“是否会有所改进?至少对于grails来说,需要一些专用的测试库。添加“testCompile”org.grails:grails数据存储gorm test:7.0.0.RELEASE是否会有所改进?至少对于grails,需要一些专用的测试库。