Объект с нулевыми свойствами с помощью отображения QBean на левой присоединяющейся таблице / Querydsl - PullRequest
0 голосов
/ 03 июля 2019

Я использую Querydsl 4.1.0 для генерации Qtable из базы данных, а также для создания Qbean для преобразования результата в мой Java-объект.Проблема, с которой я сталкиваюсь, заключается в том, что у моего класса A есть свойство класса B, и если я использую «левое соединение B», то если в базе данных нет идентификатора B для идентификатора A (что приведет к нулевым значениям этих столбцов изТаблица B в этой строке), мой объект A после преобразования будет иметь объект B со всеми нулевыми свойствами.Есть ли способ избежать создания этого нежелательного B-объекта?

Я вижу, что проблема в том, что newInstance() метод QBean всегда создает экземпляр B и возвращает его независимо от того, что все значения поля являются нулевыми, что, на мой взгляд, не так правильно.


Мои занятия:

protected final  QBean<Contact> contactQBean = 
                    Projection.fields(Contact.class,
                    qContact.id, qContact.firstName, qContact.lastName, 
                    qContact.middleName, addressQBean.as("primaryAddress"));

------------------------

 public class Contact {
private Integer id;
private String firstName;
private String middleName;
private String lastName;
private Address primaryAddress;

Мой запрос:

Map<Integer, Contact> resultMap = queryFactory.from(qContact)

            .leftJoin(qContact.contactAddressFK, qAddress)

            .transform(groupBy(qContact.id).as(contactQBean));

1 Ответ

0 голосов
/ 03 июля 2019

Ваш вопрос слишком сложный и сложный. Я не знаю ответ. Но, возможно, вы можете попытаться перейти в вашу среду IDE и скопировать некоторые другие коды из стека. Надеюсь, это поможет

...