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

使用Spring的不同视图的JPA EntityGraph

訾凯歌
2023-03-14
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)
 }

另外,当切换到一个新的视图(spring controller中的新调用)时,来自上一个视图的事务将已经关闭,我必须进行新的调用,以与用户有不同的数据。我不明白如果您不在相同的事务服务方法中,fetch lazy有什么帮助,除非我没有遗漏什么。

例如,如果我需要“orderwiew.html”中的订单数据,惰性加载订单是没有帮助的,我必须对相同的用户数据和额外的订单数据进行另一次完整调用

共有1个答案

宗政天逸
2023-03-14

关于使用多实体图的一个好处:在我工作的地方,我们使用了Spring数据可以为查询方法使用多个前缀的事实。我们设定了一个约定,具有不同前缀的方法具有不同的实体图。因此,例如,findUserByEmail(String)可以使用比readUserByEmail(String)更懒的图。

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

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

public interface UserCustomOperations{
    User findUserByEmail(String email, String entityGraph);
}
public interface UserRepository extends JPaRepository<User,Long>, UserCustomOperations{
    // Not much to do here anymore
}
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
    }
}
 类似资料:
  • 我试图在TableView中实现以下内容: 这些是我使用的模型: 我目前拥有的是一个DAO(和一个单独的模型)层,它连接所有这些表,并以如上所述的格式返回它们,但对于这个项目,它不允许使用SQL连接(学校项目)。我不认为这会成为一个问题,但现在是了。 我还尝试将三个模型作为列表包装到一个模型中,但我不确定如何保持模型之间的关系,以及如何在中显示它们。(与此处所示相同) 如果有什么不清楚的,请告诉我

  • 问题内容: 我有一个视图,其中有三个选择器视图。两个选择器视图具有相同的数据,数组的编号为1到100。第三个选择器视图具有一个数组,其中包含模型铁轨制造商的列表。我已经使用在此站点上找到的方法标记了选择器视图,但是当我运行该应用程序时,所有三个选择器视图的数据都为1到100。我还将控件从所有选择器视图拖到视图顶部的黄色圆圈,然后单击 dataSource 和 委托 。如何在一个视图中使用具有不同数

  • 问题内容: 我目前正在实现一个小型Spring MVC PoC,并且我想使用JSF作为视图技术,因为我公司中的大多数人都习惯于带有Primefaces环境的J2EE。 Spring MVC 3是否支持JSF或仅支持JSP?我读过多篇文章,将两者混为一谈。 我需要创建一个吸引人的UI。使用Spring MVC和JSP作为视图技术,是否有一种简单的方法? 我们的应用程序在多个页面中使用时间表/日历。这

  • 问题内容: 我正在使用基于SDK演示示例中EfficientAdapter示例的BaseAdapter扩展版本。 我的数据基本上是一个对象(),其中包含一个,其中包含实际的地点列表,可通过访问。此ArrayList数据按范围排序,由一些特殊项目(分隔符)组成,没有数据,但标志设置为。 现在,每当我得到一个作为分隔符的数据对象时,它都会返回并根据当前数据对象是由真实数据组成还是仅仅是分隔符虚拟物来使

  • 问题内容: 我正在制作一个有两个UIImageViews的应用程序。在每个图像视图中,用户需要能够输入不同的图像。这是我到目前为止的代码。 最终为每个不同的图像视图选择相同的图像。我希望能够选择两张单独的照片,每个视图一张。谢谢您的帮助。 问题答案: 您可以为每个按钮设置不同的标签,然后根据按钮的标签更新一个imageView或另一个。您只需要一个UIImagePickerController:

  • 问题内容: 为TextView和ImageView设置相同的ID是否正确?由于它们属于一个实体,因此我给了他们两个相同的ID。如果是..那我怎么能分别通过id找到这些视图呢? 问题答案: 为TextView和ImageView设置相同的ID是否正确? 简短答案: 否 长答案:使用相同的ID 是 不 正确的,因为这样做可能会导致运行时错误。考虑下面的例子 layout.xml LocationAct