我有一个Spring应用程序.登录后,我正在调用getUserByEmail()方法.
我只需要用户和角色数据.基于角色我将显示不同的视图,每个视图具有不同的数据并且需要User的不同子实体.
好像我必须使用不同的子实体调用getUserByEmail().
这是涉及实体的部分代码:
EntityGraph(value = "withAddresses", type = EntityGraphType.FETCH)
public class User{
public firstName;
public lastName;
@OneToMany(fetch = FetchType.LAZY)
public List<Address> addresses
@OneToMany(fetch = FetchType.LAZY)
public List<Order> orders;
}
public userRepository extend jPaRepository(User.class,Long){
@EntityGraph(name="withAdresses")
getUserByEmail(String email)
/* if possible */
@EntityGraph(name="withOrder")
getUserByEmail(String email)
}
Run Code Online (Sandbox Code Playgroud)
是否可以有两个具有相同查询名称的User对象图?因为我需要不同视图的不同数据.
此外,当切换到新视图(弹簧控制器中的新调用)时,先前视图中的事务将被关闭,我必须进行新调用以与用户具有不同的数据.我不明白如果你不在同一个事务服务方法中,fetch lazy如何有用,除非我没有遗漏任何东西.
例如,如果我需要"orderWiew.html"中的订单数据,则延迟加载订单不会有帮助我必须另外完全调用相同的用户数据和其他订单数据