首页 > 解决方案 > 加入 QueryDSL 的 BooleanBuilder

问题描述

我有这个表t_tarif_quantite,它有两个不同的外键列引用同一个表(t_facturation_element)。

alter table t_tarif_quantite 
    add constraint FKt4c9hn6gcm5gb5ext52dvi4pf 
    foreign key (fk_facturation_element_id) 
    references t_facturation_element;

alter table t_tarif_quantite 
    add constraint FKsryv7qxxo16cx1qkro5qea7wh 
    foreign key (fk_facture_individuelle_element_id) 
    references t_facturation_element;

我在我的 Java 文件中使用BooleanBuilderfromQueryDSL如下:

BooleanBuilder predicate = new BooleanBuilder();
predicate.and(qUsager.elementsFacturation.any().quantiteParTarifs
    .any().tarif.id
    .in(listTarifs));

我的问题出在这部分:

elementsFacturation.any().quantiteParTarifs.any()

它创建了一个INNER JOIN使用错误的外键(在我的情况下是错误的外键fk_facture_individuelle_element_id),如下所示:

FROM
    s_52_bill.t_facturation_element elementsfa3_ 
INNER JOIN
    s_52_bill.t_tarif_quantite quantitepa4_ 
        ON elementsfa3_.id=quantitepa4_.fk_facture_individuelle_element_id

是否可以指定在哪个外键上执行INNER JOIN?我怎样才能做到这一点?

标签: javaquerydsl

解决方案


推荐阅读