gpt4 book ai didi

Grails:从 src/groovy 类访问域类的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:09:25 25 4
gpt4 key购买 nike

chalice FAQ说这个:

Q: How can I access domain classes from sources in src/groovy?

Sometimes, you are developing some utility classes that live in src/groovy and which you intend >to use from Services and other artifacts. However, as those classes are pre-compiled by Grails, >it is not possible to instantiate them and write things like Book.findByTitle("Groovy in >Action"). But fortunately, there is a workaround since it's possible to do this:

import org.codehaus.groovy.grails.commons.ApplicationHolder

//…

def book = ApplicationHolder.application.getClassForName("library.Book").findByTitle("Groovy in Action")

The application MUST have finished bootstrapping before the dynamic Gorm methods will function correctly.


但是,似乎我可以直接导入域对象并在我的 src/groovy 类中使​​用 GORM 方法而没有任何问题,例如:
Book.findByTitle("Groovy in Action")
由于 ApplicationHolder 已被弃用,这个建议肯定已经过时了,但是还有什么理由避免直接从 src/groovy 使用域类吗?

最佳答案

你是对的,你指的是过时的信息。您可以在 src/groovy 下定义的类中使用域类。 .

唯一的开销是您必须处理 transactions手动。相反,servicesgrails-app/services默认处理事务。服务在transactional时处理事务标志设置为真(默认为真,不指定任何内容)。

另一方面,当您从 src/groovy 访问域类时您必须使用 withTransaction阻止手动处理交易..

Book.withTransaction{status->
def book = Book.findByTitle("Groovy in Action")
book.title = "Grails in Action"
book.save()

status.setRollbackOnly() //Rolls back the transaction
}

引用 withTransaction详情。

关于Grails:从 src/groovy 类访问域类的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199981/

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