当前位置: 首页 > 知识库问答 >
问题:

Hibernate代理未能成为真正的对象?

翟功
2023-03-14
class Measure{
  @OneToOne(fetch = FetchType.LAZY)
  Private Trade trade;
}

所以我的问题是,为什么交易未能将它从Hibernate代理转换为真正的对象?而且,如果我从上面的注释中删除(fetch=fetchtype.lazy)部分,这是一个变通方法吗?不过,我不愿意这样做,因为上面的代码实际上在Measure的父类中,它可能会对其他代码产生连锁反应。(为了更简单的说明,我移动了贸易属性来度量)。

共有1个答案

酆鸿彩
2023-03-14

您选择了懒惰地加载您的交易对象。

为了能够在检索度量值后访问交易,您需要处于事务上下文中(您需要一个开放的会话)

当你打电话时:

measureRepository.findAll();
public class Measure {

    @OneToOne(fetch = FetchType.LAZY)
    Private Trade trade;

    public Trade getTrade() {
        return this.trade;
    }
}

@Service
public MeasureService {

    final MeasureRepository measureRepository;

    public MeasureService(MeasureRepository measureRepository) {
        this.measureRepository = measureRepository;
    }    

    @Transactional
    public List<Trade> getTrades(String... args) {
        return measureRepository.findAll().stream()
                .map(m -> m.getTrade())
                .collect(Collectors.toList);
    }   
}
 类似资料:
  • 问题内容: 在Hibernate期间,我正在加载一些对象,由于延迟加载,其中一些对象已作为代理加载。一切正常,我不想关闭延迟加载。 但是稍后我需要通过RPC将一些对象(实际上是一个对象)发送到GWT客户端。碰巧这个具体对象是代理。所以我需要将其变成一个真实的对象。我在Hibernate中找不到类似“实现”的方法。 我如何才能将某些对象从代理变为真实,从而知道它们的类和ID? 目前,我看到的唯一解决

  • 问题内容: 我正在将Hibernate与JPA一起使用,并且具有如下所示的关系: 自从我开始使用LAZY访 存 类型以来,每次尝试获取铅笔的所有者( pencil.getOwner )时,我都会得到一个非null对象,该对象的所有内部属性都设置为null。 我看起来像是由Hibernate创建的代理没有在应该的时候从数据库中获取真实的对象。 有任何想法吗?谢谢 :) 问题答案: 正如JB Nize

  • 问题内容: 我有一个服务方法,该服务方法调用DAO,然后从数据库中返回一个对象。从系统的许多部分调用此方法。但是,一种特定的方法是将ObjectClass _ $$ _ javassist_somenumber的返回类型作为该类型。这是丢东西。我将service方法称为与其他任何地方完全相同的方法,那么为什么hibernate会返回代理而不是自然对象? 我知道有很多方法可以暴露“代理”对象,但是我

  • 我在查阅hibernate的文档时发现了这些行 无参数构造函数是所有持久类的要求;Hibernate必须使用Java反射为您创建对象。构造函数可以是私有的,但是运行时代理生成和没有字节码检测的高效数据检索需要包或公共可见性 有人能解释一下运行时代理生成和无字节码检测的高效数据检索吗

  • 向createProxy和getProxy这两个方法传了个接口类型的类,为什么生成代理对象为null呢【吐血】大佬们救救

  • 行动时刻 - 模拟代理计费 在my-org.com的FreeRADIUS服务器上执行以下操作: 将目录更改为my-org.com的FreeRADIUS服务器上用于模拟bob@your-org.com计费的文件所在的目录。 确保FreeRADIUS在代表my-org.com和your-org.com的服务器上以调试模式运行。 在my-org.com服务器上发出以下命令: $> radclient 1