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

带联接的Spring data jpa querydsl投影

赵兴朝
2023-03-14

我想优化一个queryDSL+Spring数据查询。目前我使用BooleanBuilder作为谓词,这很好,但是它连接了太多的表。我不需要表中的所有列,也不需要某些表。我相信使用投影会减少加入的表的数量。

@Entity
public class Booking {

    @ManyToOne
    @JoinColumn(name = "userId", nullable = false)
    private User endUser;
}

@Entity
public class User {

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "endUser", fetch = FetchType.LAZY)
    private List<Booking> bookings;
}
Projections.bean(Booking.class,
                 booking.uuid,
                 Projections.bean(User.class,
                                  booking.endUser.uuid
                 ).as(booking.endUser.getMetadata().getName()
);
select (...)
from booking booking0_, 
     user user12_
where booking0_.user_id=user12_.id

那么,如何使QueryDSL连接表而不是从所有表中进行选择呢?我尝试优化查询是否正确?投影有意义吗?

共有1个答案

叶展
2023-03-14

最后我创建了一个DB视图,为它创建一个实体,然后用QueryDSL查询它。这真的很简单,直接和性能也很好。

这可能是ORM能力不足的地方。

 类似资料:
  • 日安。 因此,我有mapping@id@generatedvalue(strategy=generationtype.sequence,generator=“discount_fares_id_sequence”)@sequenceGenerator(name=“discount_fares_id_sequence”,sequenceName=“discount_fares_id_seq”,all

  • 问题内容: 我正在尝试使用PostgreSQL 9.2中添加的功能将查询结果映射到JSON 。 我在找出将连接的行表示为嵌套对象(1:1关系)的最佳方式时遇到麻烦 这是我尝试过的内容(设置代码:表格,示例数据,后跟查询): 查询本身: 我发现如果使用,我可以将结果字段分离为一个子对象,但似乎仅限于一个级别。我不能插入更多的语句,因为我认为在这种情况下我需要。 为我提供了列名,因为在该表的结果中,我

  • 问题内容: 这是我的namedquery: @NamedQuery(name =“ User.findOneWithLists”,查询=“从用户u中选择u” +“左联接FEACH u.aTemplates” +“左联接FE.bTemplates” +“左联接FE.bp” +“左JOIN FETCH u.aCredentials“ +” LEFT JOIN FETCH u.st(st.deleted

  • 有没有一种方法,我可以创建PHP和MySQLi CRUD与左联接表。目前,我有4个表-费用,付款,班级和学生。用户应该能够创建、编辑和删除付款表中的数据。但是,付款的行是有限的-(payments_id,student_id,payment_date,payment_amount和fee_id)。因此,我希望用户能够选择user firstname而不是student_id。

  • 问题内容: 我一直想知道应该使用哪种类型的投影,所以我做了一点测试,涵盖了5种类型的投影(基于docs:https : //docs.spring.io/spring- data/jpa/docs/current / reference / html /#projections ): 1.实体投影 这只是Spring Data存储库提供的标准。这里没什么好看的。 服务: 实体: 2.构造函数投影

  • 我对Angular project和TypeScript的语法有一个问题,我做了一个新的空Angular project,但PhpStorm(2019.2.1)不识别TypeScript语法。