QueryDSL Созданные классы не могут получить доступ к элементам второго уровня для запросов - PullRequest
11 голосов
/ 17 июня 2011

Я использую QueryDSL с Spring Data JPA в своем Java-проекте и сгенерировал файлы с использованием плагина QueryDSL maven для использования сгенерированных им классов модели QueryDSL. Это прекрасно работает, когда я использую его для вложенных объектов одного уровня, однако, если я пытаюсь получить доступ к объектам доступа 2-го уровня, это дает исключение NullPointerException, сохраняя объект модели 2-го уровня, не инициализированный.

Буду признателен за помощь.

Я получаю исключение NullPointerException в третьей строке. Qmachine.vendor имеет значение null.

QTransaction qtransaction = QTransaction.transaction;
QMachine qmachine = qtransaction.machine;
BooleanExpression vendorexp = qmachine.vendor.vendor.eq(machineType);

Мои классы картирования приведены ниже: Сделка

@Entity
@Table(name = "dsdsd")
public class Transaction extends AbstractPersistable<Long> {

    private static final long serialVersionUID = 1L;

    @ManyToOne
    @JoinColumn(name = "machine_id")
    private Machine machine;

}

И класс Машины:

@Entity
@Table(name="machine")
public class Machine extends AbstractPersistable<Long> {

    private static final long serialVersionUID = 1L;

    @ManyToOne
    @JoinColumn(name="vendor_id")
    private Vendor vendor;
}

, а класс Vendor

@Entity
@Table(name="vendors")
public class Vendor extends AbstractPersistable<Long> {

    private static final long serialVersionUID = 1L;

    @Column(name="vendor")
    @Enumerated(EnumType.STRING)
    private VendorType vendor;

}

Я преднамеренно опустил геттеры и сеттеры.

1 Ответ

14 голосов
/ 27 июня 2011

По умолчанию инициализируется только первый уровень. См. Этот раздел документации для вариантов инициализации: http://www.querydsl.com/static/querydsl/3.6.0/reference/html/ch03s03.html#d0e2192

Полная финальная инициализация невозможна с конечными полями из-за возможности бесконечных циклов, но Querydsl предоставляет также опцию методов доступа к свойствам.

...