Фильтр гибернации с JPA - вложенные объекты - PullRequest
0 голосов
/ 17 июня 2019

Я использую Criteria API для создания динамического запроса. У меня есть сущность:

class ProcessingActivityCategory{
(...)
@OneToMany
    @JoinColumn(name = "id_kategoria_czynnosci", referencedColumnName = "id")
    private Set<ActivityCategory> activityCategories;

}

и пара вложенных сущностей. Я хотел бы получить только эти ProcessingActivityCategory.activityCategories, которые отвечают следующим требованиям:

    ProcessingActivityCategory.activityCategories.processActivity.personalData.company.id=x 
and ProcessingActivityCategory.activityCategories.processActivity.personalData.administrator.id=y

Ниже мои энтузиасты. Как использовать @Filter и @FilterDef для достижения этой цели? В каком месте / уровне я должен это использовать? Для собственности ProcessingActivityCategory.activityCategories? Но как это место углубится и создаст условия?

ActivityCategory:

    @Entity
    @Table(schema = "odo", name = "odo_czynnosc_kategoria")
    public class ActivityCategory extends BaseEntity {

        @OneToOne
        @JoinColumn(name = "id_czynnosc", referencedColumnName = "id")
        private ProcessingActivity processActivity;
(...)

ProcessingActivity:

Data
@Entity
@Table(schema = "odo", name = "odo_czynnosc_przetwarzania")
public class ProcessingActivity extends BaseEntity {

    @OneToOne
    @JoinColumn(name = "id_zbior", referencedColumnName = "id")
    private PersonalData personalData;
(...)

PersonalData:

Entity
@Table(schema = "odo", name = "odo_zbior")
@Data
public class PersonalData extends NameDescriptionEntity {

    @OneToOne
    @JoinColumn(name = "id_zbior_spolka", referencedColumnName = "id")
    private Company company;

    @OneToOne
    @JoinColumn(name = "id_zbior_rodzaj", referencedColumnName = "id")
    private DataKind dataKind;

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

    @OneToOne
    @JoinColumn(name = "id_zbior_administrator", referencedColumnName = "id")
    private Company administrator;

Компания:

@Entity
@Data
@Table(schema = "odo", name = "d_odo_spolka")
public class Company{
private Long id
(...)
...