QueryDSL 可以在生成的类中使用抽象类方法吗?

问题描述 投票:0回答:2

可以使用queryDSL生成的类来引用类中的抽象方法吗?

这是一个例子:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class A {
    @Id private Long id;

    public getId/setId;
    protected abstract Date finalDate();
}

@Entity
class B extends A {
    private Date finalDate;

    public getFinalDate/setFinalDate;
}

@Entity
class C extends A {
    private B b;

    public getFinalDate(){return b.getFinalDate());
}

我想使用这样的查询:

new JPAQuery<A>(em)
.select(a)
.where(a.finalDate.isNotNull())
.fetch();

但是在构建阶段(构造元类)之后,生成的 A 类(QA.class)没有任何类似的东西。

java jpa querydsl
2个回答
2
投票

JB Nizets 的评论就是答案:

否,查询需要转换为 SQL,并由 数据库。数据库不知道也不关心你的类和 方法。它所知道的只是它的表和列。 – JB 尼泽 10 几小时前


0
投票

在生成的 Qtype 中探索 _super

public abstract class AbstractDao<T extends AbstractEntity, Q extends EntityPath<T>> {

    private final Q qEntity;
    private final QAbstractEntity qAbstractEntity;

    public AbstractDao(Q qEntity, QAbstractEntity qAbstractEntity) {
        this.qEntity = qEntity;
        this.qAbstractEntity = qAbstractEntity;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.