API критериев JPA - СЛЕДУЮЩЕЕ ВНЕШНЕЕ СОЕДИНЕНИЕ не заполняет список @OneToMany - PullRequest
0 голосов
/ 03 ноября 2018

Это моя сущность:

public class Patrimony {

 @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(mappedBy = "patrimony")
    @JsonManagedReference 
    private
    List<Patrpos> positions;
}

Мой код:

CriteriaBuilder cb = manager.getCriteriaBuilder();

CriteriaQuery<Patrimony> cq = cb.createQuery(Patrimony.class);
Root<Patrimony> root = cq.from(Patrimony.class);

Join<Patrimony, UserProfile> userprofile = root.join(Patrimony_.userprofile);
Join<Patrimony, Patrpos> joinPatrpos = root.join(Patrimony_.positions, JoinType.LEFT);
root.fetch(Patrimony_.positions);

joinPatrpos.on(cb.equal(joinPatrpos.get(Patrpos_.dtPatrpos), dateproc.minusDays(1)));

cq.select(root);

TypedQuery<Patrimony> query = manager.createQuery(cq);

List<Patrimony> list = query.getResultList();

Сгенерированный запрос выглядит нормально и выглядит примерно так:

select
    patrimony0_.id as id1_10_0_,
    positions3_.id as id1_11_1_,
    patrimony0_.category_id as categor15_10_0_,
    patrimony0_.description as descript2_10_0_,
    patrimony0_.vl_valuation_start as vl_valu14_10_0_,
    positions3_.dt_patrpos as dt_patrp2_11_1_,
    positions3_.vl_patrpos as vl_patrp6_11_1_,
from
    patrimony patrimony0_ 
inner join
    userprofile userprofil1_ 
        on patrimony0_.userprofile_id=userprofil1_.id 
left outer join
    patrpos positions2_ 
        on patrimony0_.id=positions2_.patrimony_id 
        and (
            positions2_.dt_patrpos=?
        ) 
inner join
    patrpos positions3_ 
        on patrimony0_.id=positions3_.patrimony_id 
where userprofil1_.id=161

Похоже, что запрос возвращает все данные, которые мне нужны, сущность Patrimony возвращается со всеми данными в порядке, кроме атрибута "Список позиций", который всегда равен нулю.

Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

При просмотре модульного теста я замечаю, что я не вызывал flush () и clear () после вставки данных теста. Я добавил очистить и очистить перед вызовом запроса, и все объекты были заполнены правильно.

Спасибо всем за комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...