【发布时间】:2022-01-10 15:08:38
【问题描述】:
我正在将应用程序升级到 grails-5。我已将我的数据库连接信息从自定义 DataSource.groovy 移动到 application.yml。 环境: 发展: 数据源: dbCreate:更新 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)]
【问题讨论】:
-
看起来您可能在某个映射到数据库的实体中有一个名为
transactionManager的属性。可能发生的原因有很多。一种是标有@Transactional的域类。但是,如果没有看到代码,很难确定。 -
这可能与您几年前在stackoverflow.com/questions/55416278/… 提出的问题类似
-
@JeffScottBrown,你是对的。它确实发生在具有
@Transactional annotation的类上。你能帮我理解为什么@Transactional 会导致这个吗?我很困惑,因为在 grails 2 中它运行良好。 -
"你能帮我理解为什么@Transactional 会导致这个吗?" - 注释有一个与之关联的 AST 转换,它将事务管理相关的代码添加到类中,包括
transactionManager。没有充分的理由用@Transactional标记域类。
标签: grails grails-orm grails-domain-class