我有一个具有惰性关系的用户实体
@JoinTable(name = "user_identities", joinColumns = {
@JoinColumn(name = "user_id")}, inverseJoinColumns = {
@JoinColumn(name = "user_identity_id")})
@OneToMany(fetch = FetchType.LAZY, orphanRemoval = true)
private Set<Identity> identities;
@JoinTable(name = "user_roles", joinColumns = {
@JoinColumn(name = "user_id")}, inverseJoinColumns = {
@JoinColumn(name = "role_id")})
@OneToMany(fetch = FetchType.LAZY)
private Set<Role> roles;
我执行休眠
@Query("SELECT u FROM User u JOIN u.identities i JOIN FETCH u.roles r WHERE i.sub = :sub AND i.issuer = :issuer")
Optional<User> findByIdentitySubAndIssuer(String sub, String issuer);
在 jvm 模式(非本机)下一切正常,但在本机映像中,我收到以下错误:
当配置的 BytecodeProvider 为“none”时,不允许在运行时生成 HibernateProxy 实例;您的模型需要启用更高级的 BytecodeProvider..
我使用的是Spring Boot 3.1.0
Hibernate 版本 6.2.2 Final
我试图启用休眠增强器,添加到属性 杰帕: 特性: 休眠: 增强剂: 启用:真
这导致应用程序在本机模式下启动时出现另一个异常 无法初始化 JPA EntityManagerFactory:默认解析器抛出异常 无法实例化命名策略类 [org.hibernate.boot.model.relational.ColumnOrderingStrategyStandard]
更新: 和 id 'org.springframework.boot' 版本 '3.0.7' 和 id 'org.hibernate.orm' 版本“6.1.7.Final
还在获取 在 Spring 原生中:当配置了 BytecodeProvider 时,不允许在运行时生成 HibernateProxy 实例
请帮忙。 tnx
如这个Spring问题中所述,您需要在构建时通过hibernate-enhance-maven-plugin
提供字节码增强梯度
plugins {
id "org.hibernate.orm" version "<version-to-use>"
}
hibernate {
enhancement {
lazyInitialization true
}
}
行家
<plugin>
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>$currentHibernateVersion</version>
<executions>
<execution>
<configuration>
<failOnError>true</failOnError>
<enableLazyInitialization>true</enableLazyInitialization>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
还要考虑到,在最新的 Hibernate 版本 6.2 中,插件中使用的 enableLazyInitialization 参数已被弃用并默认启用: HHH-15641
有关字节码增强的更多信息,请参阅Hibernate 文档