Java中的JPabel画板类简介_java – 使用Spring的不同视图的JPA EntityGraph

我有一个Spring应用程序.登录后,我正在调用getUserByEmail()方法.

我只需要用户和角色数据.基于角色我将显示不同的视图,每个视图具有不同的数据并且需要User的不同子实体.

好像我必须使用不同的子实体调用getUserByEmail().

这是涉及实体的部分代码:

EntityGraph(value = "withAddresses", type = EntityGraphType.FETCH)

public class User{

public firstName;

public lastName;

@OneToMany(fetch = FetchType.LAZY)

public List

addresses

@OneToMany(fetch = FetchType.LAZY)

public List orders;

}

public userRepository extend jPaRepository(User.class,Long){

@EntityGraph(name="withAdresses")

getUserByEmail(String email)

/* if possible */

@EntityGraph(name="withOrder")

getUserByEmail(String email)

}

>是否可以有两个具有相同查询名称的User对象图?

因为我需要不同视图的不同数据.

>此外,当切换到新视图(弹簧控制器中的新调用)时,先前视图中的事务将被关闭,我必须进行新调用以与用户具有不同的数据.我不明白如果你不在同一个事务服务方法中,fetch lazy如何有用,除非我没有遗漏任何东西.

例如,如果我需要“orderWiew.html”中的订单数据,则延迟加载订单不会有帮助我必须另外完全调用相同的用户数据和其他订单数据

解决方法:

仅仅是关于使用多个实体图的消息:在我工作的地方,我们使用了Spring Data可以为查询方法使用多个前缀的事实.我们设置了一个约定,即具有不同前缀的方法具有不同的实体图.因此,例如,findUserByEmail(String)可以使用比readUserByEmail(String)更懒的图形.

不幸的是,我不认为Spring Data支持传递实体图以动态方式使用.但是,您可以实现它并将其添加到您的存储库中.要做到这一点,你应该:

创建一个声明新方法的接口(但不扩展JpaRepository或其他存储库接口)

public interface UserCustomOperations{

User findUserByEmail(String email, String entityGraph);

}

使您的存储库接口扩展该接口.

public interface UserRepository extends JPaRepository, UserCustomOperations{

// Not much to do here anymore

}

创建一个在同一个包中实现自定义行为的类,后缀为Impl(默认情况下).

public class UserRepositoryImpl implements UserCustomOperations{

public User findUserByEmail(String email, String entityGraph){

// Inject the EntityManager and execute standard Jpa query with the entity graph set

}

}

标签:java,spring,jpa,spring-data

来源: https://codeday.me/bug/20190519/1137182.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值