Добрый день,Querydsl: поле не правильно инициализировано на дочернем классе
Мы используем qdsl для доступа к нашим наследуемым объектам. У нас есть родительский класс (Parent
), который имеет сложный объект (BasicProduct
) в качестве поля. Затем у нас есть несколько детей (один из них - Child
). В запросе мы пытаемся получить доступ к BasicProduct
из автогенерируемого кода QChild
. Из того, что мы видели, поле для доступа к BasicProduct
существует как на QParent
, так и на QChild
, но только тот, что находится на QParent
, правильно инициализирован.
Структура объектов:
Родительский объект -
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="TYPE",
discriminatorType= DiscriminatorType.STRING)
public abstract class Parent
//bunch of fields
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BASIC_PRODUCT_ID")
protected BasicProduct basicProduct;
}
Детский объект -
@DiscriminatorValue(value = "Child")
public class Child extends Parent {
//bunch of fields
}
Запрос доступа:
HibernateQuery query = new HibernateQuery(session);
query = query.distinct().from(thing)
.leftJoin(thing.childSet, child)
.leftJoin(child.basicProduct(), basicProduct)
.leftJoin(child.basicProduct().fieldA, fieldA)
.leftJoin(basicProduct.fieldB, fieldB);
Запрос доступа выше потерпеть неудачу чтобы построить. Что мы делаем не так?
Спасибо. Это спасло нам дни расследования. Вы - бог среди людей. – Rince
Бог действительно среди людей! :-) –