Grails 5 应用程序中的数据库连接失败,创建 hibernateDatastore 时出错

DB connectivity fails in grails 5 application with error creating hibernateDatastore

我正在将应用程序升级到 grails-5。我已将我的数据库连接信息从自定义 DataSource.groovy 移至 application.yml。 环境: 发展: 数据源: 数据库创建:更新 url: jdbc:mysql://hostName:port/DbName?user=x;password=y

凭据正确,但应用程序无法启动并抛出以下错误。

springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to i
nstantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception; nested exception is org.hibernate.MappingException: Could not determine type for: org.springframework.transaction.PlatformTransactionManager, at t
able: <<table_name>>, for columns: [org.hibernate.mapping.Column(transaction_manager)]

如果您在域 class 上有 @Transactional(没有充分理由这样做),这将导致一个名为 transactionManager 的 属性 添加到class。这是执行事务管理逻辑所必需的。问题是域 class 中的属性默认映射到数据库,除非它们被配置为瞬态。

您应该从域 class 中删除 @Transactional 注释,并在管理事务的任何地方移动任何事务逻辑,这通常在事务服务中。