Я использую 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));