Micronaut数据-没有[org.hibernate.SessionFactory]类型的bean

Micronaut数据-没有[org.hibernate.SessionFactory]类型的bean,hibernate,micronaut,micronaut-data,Hibernate,Micronaut,Micronaut Data,首先要提到的是,我已经准备好了一切。我所做的唯一更改是向代码中添加更多的存储库 然后我得到: 15:47:58.126[pool-2-thread-4]错误 i、 m.h.s.netty.RoutingInBoundHandler-发生意外错误: 未能为类的参数[sessionFactory]注入值: io.micronaut.transaction.hibernate5.HibernateTransactionManager 消息:服务器不存在[org.hibernate.SessionFac

首先要提到的是,我已经准备好了一切。我所做的唯一更改是向代码中添加更多的存储库

然后我得到:

15:47:58.126[pool-2-thread-4]错误 i、 m.h.s.netty.RoutingInBoundHandler-发生意外错误: 未能为类的参数[sessionFactory]注入值: io.micronaut.transaction.hibernate5.HibernateTransactionManager

消息:服务器不存在[org.hibernate.SessionFactory]类型的bean 给定的限定符:@Named('default')。确保bean没有被禁用 按bean要求(为 要检查的“io.micronaut.context.condition”)以及bean是否已启用 然后确保类被声明为bean,并且注释处理是 已启用(适用于Java和Kotlin的“micronaut注入Java”依赖项 应配置为注释处理器)。所走的道路:新的 HibernateTransactionManager([SessionFactory SessionFactory],数据源 数据源、拦截器实体(拦截器) io.micronaut.context.exceptions.DependencyInjectionException:失败 要为类的参数[sessionFactory]注入值: io.micronaut.transaction.hibernate5.HibernateTransactionManager

我查阅了很多关于这方面的文章,但都提到了家属。但是我没有改变我的依赖关系。所以我开始调查。但是到目前为止没有成功

我仔细检查了我的渐变身材

kapt 'io.micronaut.data:micronaut-data-processor:1.0.2'
implementation 'io.micronaut.data:micronaut-data-hibernate-jpa:1.0.2'
implementation 'io.micronaut.configuration:micronaut-jdbc-hikari'
runtime 'org.postgresql:postgresql:42.2.12'
testImplementation 'com.h2database:h2:1.4.200'
我还确保使用了正确的版本,但是单元测试不会运行

在micronaut 1.3.5中使用Gradle 6.4.1,在jpa中使用数据1.0.2。 有什么想法吗

还激活了条件跟踪,但与sessionfactory无关。 只是一些spring的东西,但我不使用spring,所以我认为它可以

15:47:39.037 [Test worker] DEBUG i.m.context.condition.Condition - Bean [io.micronaut.jdbc.spring.$DataSourceTransactionManagerFactory$TransactionAwareDataSourceListener1Definition] will not be loaded due to failing conditions:
15:47:39.038 [Test worker] DEBUG i.m.context.condition.Condition - * Class [org.springframework.jdbc.datasource.DataSourceTransactionManager] is not present
有什么想法吗。。因为这让我有点疯狂:D


Oliver

我是Kotlin和Micronaut的新手,所以我不确定。但是你的数据类是从小写字母开始的

例如:

@Entity
data class dataBook (
        @Id
        @GeneratedValue
        val id: Long
)

最后我发现了错误:-)

数据类DataX(
@身份证
valid:String
) {
瓦莱夫斯
get()=\u yrefs.toList()
@OneToMany(cascade=[CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH],orphandremovation=true,fetch=FetchType.EAGER,
mappedBy=“yref”)//<这是错误的,必须是外部参照
private val_yrefs=mutableListOf()
}
数据类数据(
@身份证
valid:String
) {
瓦尔·兹列夫斯
get()=\u zrefs.toList()
@OneToMany(cascade=[CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH],orphandremovation=true,fetch=FetchType.EAGER,
mappedBy=“zref”)
private val_zrefs=mutableListOf()
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“x\u ref\u id”)
变量外部参照:数据X?=null
}

您能提供一些代码吗?在没有看到项目的情况下很难说什么你希望我提供大约5k LoC吗?我认为依赖项有问题。。因为它起作用了,我只是添加了一些存储库。。对我来说,这个错误意味着默认的会话工厂不存在。。因此,我想知道如何在没有任何错误信息的情况下对此进行调查,以及错误是什么?@PatrickFavre查看答案中的评论;-)提示:映射错误
data class DataX(
        @Id
        val id: String
) {

val yrefs
    get() = _yrefs.toList()

@OneToMany(cascade = [CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH], orphanRemoval = true, fetch = FetchType.EAGER,
           mappedBy = "yref") // < this was wrong must be xref
private val _yrefs= mutableListOf<DataY>()
}


data class DataY(
        @Id
        val id: String
) {
val zrefs
    get() = _zrefs.toList()

@OneToMany(cascade = [CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH], orphanRemoval = true, fetch = FetchType.EAGER,
           mappedBy = "zref")
private val _zrefs = mutableListOf<DataZ>()

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "x_ref_id")
var xref: DataX? = null
}