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

Spring数据JPA字节码增强

陶富
2023-03-14

是否有可能使用JPA接口(实体图)急切地加载@*ToOne属性,这些接口使用父实体类中的@LazyToOne、@LazyGroup设置为懒惰,并启用了字节码增强?我正试图急切地使用实体图加载此类属性,但当查询父实体时,它会触发对此类@*ToOne属性的另一个查询。

试图用另一种方法覆盖实体类中的静态获取类型,包括@LazyToOne,它添加了字节码增强功能。

使用Spring 5.1.3、Spring JPA 2.2、Hibernate 5.4.19

更新:数据JPA正在按预期工作,我可以看到我正在急切地获取的属性的连接,但这些惰性属性没有使用连接查询响应初始化,并且Hibernate导致每个查询都引用了带有@LazyToOneOption注释的属性。没有_代理,并且已经在我的存储库中使用entity graph急切地获取了。

我怎么能避免这第二个选择,这是不需要的,因为我从JPA存储库中的实体图中急切地得到了那个数据??

任何帮助都将不胜感激。

共有1个答案

有骏祥
2023-03-14

实体图与Hibernate fetch配置文件一样适用,无论关联上有什么注释。如果没有,可能是Spring数据中存在错误,甚至可能是Hibernate。最好是创建一个新的JIRA问题,并用一个测试用例重现该问题。

话虽如此,我认为这是Blaze Persistence实体视图的完美用例。

我创建了这个库,以便在JPA模型和自定义接口或抽象类定义的模型之间进行简单的映射,比如Spring数据在类固醇上的投影。其思想是,您可以按照自己喜欢的方式定义目标结构(域模型),并通过JPQL表达式将属性(getter)映射到实体模型。

使用Blaze Persistence实体视图时,DTO模型的示例可能如下所示:

@EntityView(User.class)
public interface UserDto {
    @IdMapping
    Long getId();
    String getName();
    Set<RoleDto> getRoles();

    @EntityView(Role.class)
    interface RoleDto {
        @IdMapping
        Long getId();
        String getName();
    }

    // Other mappings
}

查询是将实体视图应用于查询的问题,最简单的是通过id进行查询。

UserDto a=entityViewManager。find(entityManager,UserDto.class,id)

Spring数据集成让您可以像使用Spring数据投影一样使用它:https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#spring-数据特征

 类似资料:
  • 我正在尝试将字节码增强功能添加到基于Java的Hibernate应用程序中。Hibernate是版本5.2.6.final,它内置在maven中,所以我使用的是hibernate-enhance-maven-plugin。我已经测试了以下直到5.2.18.final的问题,但结果是相同的。 “enableAssociationManagement”选项给了我几个问题,应用程序无法增强。我的问题是,

  • 我使用下面的链接作为参考来实现从PostgreSQL DB懒惰加载图像: URL 在我的用户实体中,我声明字节数组字段: 在pom.xml文件我包括hiberante增强插件: 问题是,当我从数据库中获取用户实体时,也会加载化身字节数组,这是我不想要的。 我知道hibernate enhance maven插件应该增强/改变用户。类文件,这没有发生。 我错过什么了吗? 更新: 我执行增强目标: 组

  • 问题内容: 我正在使用Hibernate 4.2并构建时间字节码工具来解决出现在关系上的懒惰问题和(https://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone- to-one ) 您知道之间有什么区别吗? Hibernate字节码检测工具:http : //docs.jboss.org/hibernate/orm/4.3/ma

  • 我有两个实体。父母和孩子。 儿童知识库。JAVA 我试图通过标准找到子实体,它应该总是有父实体。 我得到一个例外,它试图在地址表中找到parentObj。 我找到了这个链接,并尝试了Joep给出的解决方案,但出现了相同的错误。 Spring数据JPA JpaSpecificationExecator EntityGgraph 我错过了什么。我无法理解为什么/如何在just Child对象中查找pa

  • 问题内容: 以下是我的申请流程 控制器-服务-存储库 在服务层,我们具有注释。我们还具有配置,在其中指定实体管理器和txn管理器。 我的怀疑是我认为考虑了在其中指定的txn管理器,并且在服务层进行指定没有影响。例如:服务层可以映射到自定义的txn管理器,其中服务调用的存储库可能具有不同的txn管理器。在那种情况下会不会造成问题? 有人可以澄清一下,在使用jpa存储库时是否需要将其放置在服务层上?

  • 我使用的是Spring数据jpa,MySQL。我有以下实体 Mysql表如下所示, 我想搜索所有