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

hibernate不急于加载@any association

胡元忠
2023-03-14

我无法在hibernate中急切地加载多态相关对象。我知道默认的FetchType渴望@Any,但我不能急于加载字段。下面是一段代码片段:

@Entity
public class ActionTemplate {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Any(metaColumn = @Column(name ="protocol_type"),fetch = 
FetchType.EAGER)
@AnyMetaDef(idType = "long",metaType = "string",metaValues = {@MetaValue(targetEntity = Http.class,value = "http")})
@JoinColumn(name = "protocol_id")
@Cascade({org.hibernate.annotations.CascadeType.ALL})
private ActionProtocol protocol;
}

public interface ActionProtocol {
ProtocolType getType();
}


@Entity
public class Http implements ActionProtocol{
            //some data fields and methods
}

当我从hibernate通过id获取它时,会出现延迟初始化异常。我不明白为什么会这样。谁能帮忙吗?

共有1个答案

夹谷岳
2023-03-14

这是一只冬眠中的虫子,已经10年了。https://hibernate.atlassian.net/browse/HHH-3574

 类似资料:
  • 我通过提示检查了它在EclipseLink中的工作情况: 这个链接http://blog.ringerc.id.au/2012/06/jpa2-is-very-inflexible-with-eagerlazy.html暗示通过Hibernate是不可能的,建议手动获取。但是,我无法理解如何通过HQL或标准来实现它,特别是如何获得不在实体上但仅存在于数据库上的child.parent_id列。即避

  • 我见过几个类似的问题有0个好答案。 这应该非常简单。我正在使用 Java JPA,有时想要加载子实体列表,但不是所有时间。不幸的是,当我说要懒惰地获取它时,JPA似乎没有听我的话。我已经 100% 确定在我的代码中没有任何地方以任何方式访问 childEntities 属性。但是,在我的 JPA.em(.)查找(.)调用时,所有子实体仍然会立即加载。这就是我如何声明与注释的关系。 我是这样加载父实

  • 我尝试实现简单的一对多关联。在使用调试模式检查item对象后,我发现已经加载了list bids。但是List bids属性是用FetchType.Lazy注释的。一些书籍和网页声称FetchType.lazy是JPA提供者接受或拒绝的提示。但我想知道JPA提供程序在什么情况下忽略FetchType.lazy。提前谢谢你。

  • 我有几个具有惰性一对多关系的实体(为简洁起见省略了逻辑): 在某些情况下(非常罕见),我希望急切地加载A的实例及其所有关联。这样做的原因是,我想对该实例及其子实例整体进行一些修改,然后根据用户输入保存或丢弃它们。 如果我要根据需要加载东西,我必须根据用户请求将实体重新附加到新会话,但它们正在被修改,修改还不应该持久化。 所以我写了这样的东西: 当我尝试访问内容时,我在第 遇到异常: 如果我在条件中

  • 问题内容: 背景 我将项目中的LINQ-to-SQL代码更改为Entity Framework。大部分更改都相对简单,但是,我遇到了一个相当大的问题。使用LINQ-to- SQL,我能够使用如下存储过程来加载整个对象图(针对模型B): 但是,将这段代码转换为EF之后,在访问ViewModel.Model.ModelBs的行上,出现错误“ EntityCommandExecutionExceptio

  • 我有3个模型 1-书: 2-用户 3-书签用户 bookuser迁移: 我试图得到所有的书籍与喜欢的只是当前的用户: 这是我得到的: 我如何访问数据透视表...或者如何得到那样的??我正在尝试,但id不起作用