我还在学习Grails。我正在一点一点地建立我的启动项目。请原谅我这么多新手问题。
命令 generate-all 创建我的图书服务类。 Grails 生成 BookService。它看起来像这样。
import grails.gorm.services.Service
@Service(Book)
interface BookService {
Book get(Serializable id)
List<Book> list(Map args)
Long count()
void delete(Serializable id)
Book save(Book book)
}
Grails 使用保存操作生成 BookController,该操作调用服务来保存我的书。bookService.save(book)
到现在为止还挺好。我可以毫无问题地保存。但是,我将 bookService.save(book) 替换为 book.save() 在保存 Action 中。现在,它不会将我的书保存到数据库中。我也试试 book.save(刷新:真) .它也不会保存这本书。你知道为什么 book.save() (有或没有flush:true)不会保存但 bookService.save(book) 会保存吗?
不知道是什么接口(interface) BookService 在 Grails 中的意思。
你能教我在哪里可以向 BookService 添加更多方法吗?
非常感谢。
最佳答案
不允许保存外部交易。 Controller 不是事务性的。如果要保存在 Controller 中,请在事务中移动保存逻辑,例如 -
Book.withTransaction { status ->
...
}
https://github.com/hibernate/hibernate-orm/blob/5.2/migration-guide.adoc#misc最佳做法是使用
Service
所有数据库相关事件的层。大约
interface Service
请查看http://gorm.grails.org/latest/hibernate/manual/index.html#dataServicesGrails: How to override generated service method?
Grails 3.3.3 generate-all <domain class> Creates only the Service Interface
关于grails - 你能告诉我如何保存我的域类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64567808/