Как заставить @Filter работать до @JoinColumn в Hibernate - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть сущность A & B, как показано ниже. Я пытаюсь сначала отфильтровать сущность B перед A JoinColumn, чтобы получить B. Но фильтр всегда запускается после A JoinColumn :( Я благодарен за любую помощь

@Entity
@Table(name = "A")
public class A {
 @Id
 private Long id;

 @Column(name = "name")
 private String name;

 @Column(name = "code_lang")
 private String codeLang;

 @ManyToOne
 @JoinColumn(name = "b_id")
 private B b;
}

@Entity
@Table(name = "B")
@FilterDef(
        name = "languageFilterB",
        parameters = @ParamDef(name = "filterCodeLangue", type = "string")
)
@Filter(
        name = "languageFilterB",
        condition = "code_lang = :filterCodeLangue"
)

public class B {
    @Id
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "code_lang")
    private String codeLang;
}

Проверка функции:

public void test() {
        Session session = entityManager.unwrap(Session.class);
        Filter sessionFilter = session.enableFilter("languageFilterB");
        sessionFilter.setParameter("filterCodeLangue", "20");

        List<A> res = aRepo.findAll();
}
...