首页 > 解决方案 > org.hibernate.LazyInitializationException:无法初始化代理 - Kotlin

问题描述

我有一个项目kotlin hibernate一起使用,我的问题是org.hibernate.LazyInitializationException: could not initialize proxy当我尝试访问一个Lazy获取相关字段的实体时得到一个。我把@Transactional调用存储库方法的服务方法。

如果我投入Hibernate.initialize(download.content)服务它工作正常,但我想避免这种情况。而且我不设置实体字段Eager

我的实体:

@Entity
class Download(
        user: User,
        subject: String,
        @OneToOne(fetch = FetchType.LAZY, cascade = [CascadeType.ALL]) 
        @JoinColumn(name = "content_id", referencedColumnName = "id") val content: ActionContent
) : Action(user, subject)

@Entity
class ActionContent (
        @Lob val content: String,
        @Id @GeneratedValue var id: Long? = null
)

有没有人遇到过同样的问题?

标签: hibernatejpakotlin

解决方案


有两种选择。

  1. 定义一个实体图
  2. 在查询中使用 JOIN FETCH

两者都将触发延迟加载的 realtionships 的加载


推荐阅读