gpt4 book ai didi

java - LazyToOne 和 Spring LoadTimeWeaver

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:45 24 4
gpt4 key购买 nike

我有一个已知的问题,即 Hibernate 会加载数据,即使使用注释 fetchtype.lazy(例如此处描述:http://justonjava.blogspot.de/2010/09/lazy-one-to-one-and-one-to-many.html)也是如此。

因此,我将注释 @LazyToOne(LazyToOneOption.NO_PROXY) 添加到我的属性中,并使用 springs loadtimeweaver 启用了字节码 Instrumentation。
但是 hibernate 仍然急切地加载我的属性。

我已经通过编写自己的代码测试了 loadtimeweaver,它可以正常工作。有谁知道我想念什么。

下面描述了我的代码的结构。

我有具有双向一对一关系的实体,例如:

@Entity
public class ParentEntity {

@OneToOne(fetch = FetchType.LAZY)
@LazyToOne(LazyToOneOption.NO_PROXY)
private ChildEntityONE childentityOne;


@OneToOne(fetch = FetchType.LAZY)
@LazyToOne(LazyToOneOption.NO_PROXY)
private ChildEntityTWO childentityTwo;
}

@Entity
public class ChildEntityONE {
@OneToOne(fetch = FetchType.LAZY)
@LazyToOne(LazyToOneOption.NO_PROXY)
private ParentEntity parentEntity ;
}

@Entity
public class ChildEntityTWO {
@OneToOne(fetch = FetchType.LAZY)
@LazyToOne(LazyToOneOption.NO_PROXY)
private ParentEntity parentEntity ;
}

我在我的应用程序类 loadTimeWeaving 中启用了:

@EnableLoadTimeWeaving(aspectjWeaving=EnableLoadTimeWeaving.AspectJWeaving.ENABLED)
public class Application {
...
}

所用框架的版本:

Spring 4.2.3
Spring 启动 1.3.2
hibernate 4.3.11.Final

最佳答案

我发现了我的错误。我忘记在 application.properties 中设置以下属性。

spring.jpa.properties.hibernate.ejb.use_class_enhancer=true

此属性启用 hibernate 中的字节码增强

关于java - LazyToOne 和 Spring LoadTimeWeaver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com