Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate将对象的代理设置为_Java_Hibernate_Hibernate Mapping_Javassist - Fatal编程技术网

Java Hibernate将对象的代理设置为

Java Hibernate将对象的代理设置为,java,hibernate,hibernate-mapping,javassist,Java,Hibernate,Hibernate Mapping,Javassist,我们正在使用我们开发的一组Web服务 其中一个服务使用JPA映射从一些表中检索信息。Hibernate返回一个对象,并按预期工作 另一个服务检索一个非常相似的对象,它返回一个代理而不是一个读取对象。提取设置为“急切”,因此我真的不明白为什么会发生这种情况。我们尝试了几种方法将代理转换为真实数据(我理解这是不必要的,因为它被设置为“渴望”),但代理没有被转换 我们正在使用hibernate 3.5.4-final,以防出现问题 我真的不知道从哪里开始,有什么提示吗 @Entity public c

我们正在使用我们开发的一组Web服务

其中一个服务使用JPA映射从一些表中检索信息。Hibernate返回一个对象,并按预期工作

另一个服务检索一个非常相似的对象,它返回一个代理而不是一个读取对象。提取设置为“急切”,因此我真的不明白为什么会发生这种情况。我们尝试了几种方法将代理转换为真实数据(我理解这是不必要的,因为它被设置为“渴望”),但代理没有被转换

我们正在使用hibernate 3.5.4-final,以防出现问题

我真的不知道从哪里开始,有什么提示吗

@Entity
public class Foo1
{
    @OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
    private List<Foo2> list = new ArrayList<Foo2>();
}

@Entity
public class Foo2
{
    @ManyToOne(fetch = FetchType.EAGER)
    private Foo3 obj;
}
我的一个想法是Hibernate可能有一个内部异常被管理,这就是为什么我得到一个代理而不是真正的对象

编辑 这是与问题相关的Hibernate配置:

<property name="hibernate.max_fetch_depth" value="0"/>
<property name="hibernate.default_batch_fetch_size" value="16"/>
<property name="hibernate.jdbc.batch_size" value="16"/>


我们修复了调用
entityManager.unProxy的问题,但它仍然感觉不正确,因为它应该已经被取消,因为映射设置为“渴望”。

我们修复了调用
entityManager.unProxy的问题,但它仍然感觉不正确,因为它应该已经被取消,因为映射设置为“渴望”。

您可以发布该实体吗类以及如何获取实体。@MadhusudanaReddySunnapu:完成,抱歉。我应该一开始就添加它。
Foo2
Foo3
都标记为渴望。我想您看到的是
列表的代理。能否启用
show_sql
并检查查询是否被激发以获取渴望的关系?@MadhusudanaReddySunnapu:再次抱歉,这是被代理的Foo2的obj属性。无论如何,你的建议是一个很好的观点。我们将尝试它,因为它也是适用的。谢谢。你能发布那个实体类吗?你是如何得到实体的。@MadhusudanaReddySunnapu:完成了,对不起。我应该一开始就添加它。
Foo2
Foo3
都标记为渴望。我想您看到的是
列表的代理。能否启用
show_sql
并检查查询是否被激发以获取渴望的关系?@MadhusudanaReddySunnapu:再次抱歉,这是被代理的Foo2的obj属性。无论如何,你的建议是一个很好的观点。我们将尝试它,因为它也是适用的。谢谢。理想情况下应该是。加载渴望的收藏。您是否有机会检查查询是否被激发以获取渴望的关系?@Madhusudanareddysunapu:在这种情况下,查询不会被激发。@Madhusudanareddysunapu:当然,这是一个简化的示例,真正的实体(Foo3)有一个复杂的依赖关系树。我不确定这是否会有影响。理想情况下,它应该。加载渴望的集合。您是否有机会检查查询是否被激发以获取渴望的关系?@Madhusudanareddysunapu:在这种情况下,查询不会被激发。@Madhusudanareddysunapu:当然,这是一个简化的示例,真正的实体(Foo3)有一个复杂的依赖关系树。我不确定这是否会有影响。
<property name="hibernate.max_fetch_depth" value="0"/>
<property name="hibernate.default_batch_fetch_size" value="16"/>
<property name="hibernate.jdbc.batch_size" value="16"/>