gpt4 book ai didi

grails - 在Grails之外的GORM for Hibernate

转载 作者:行者123 更新时间:2023-12-02 15:03:32 27 4
gpt4 key购买 nike

我从github repo演示如何在Grails之外使用GORM开始,我试图使用动态查找器,以便可以通过其属性之一来查找特定的域对象。在此示例中,我们将这个person对象设置为groovy:

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
}
}

现在说我想用姓氏查找一个人。我应该能够使用GORM增强的Person实体方法 findByLastName。我可以编译尝试执行此操作的代码,但是当我在运行时调用它时,找不到该方法。

我向PersonSpec.groovy添加了一个测试方法,如下所示:
   @Rollback
def "person can be found by last name"() {
when:
def p = new Person(firstName: 'Scott', lastName: 'Ericsson')
p.save(flush: true)

def foundPerson = p.findByLastName('Ericsson')

then:
foundPerson.firstName == 'Scott'
}

运行测试时出现此错误:
domain.PersonSpec > person can be found by last name FAILED
groovy.lang.MissingMethodException at PersonSpec.groovy:32

它上面的测试方法成功创建并保存了个人记录,因此GORM功能的某些方面正在起作用。但是,即使编译器认为一切看起来不错,动态finder功能也无法在运行时正确应用。

我的整个build.gradle是这样的:
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对象上而不是person实例上静态使用findByLastName方法。现在可以在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'
}

关于grails - 在Grails之外的GORM for Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com