gpt4 book ai didi

java - 查找多个子类的不同属性

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:08 27 4
gpt4 key购买 nike

我有 3 个实体AgentPersonMachine

abstract Agent
Long id

Person extends Agent
String firstName
String lastName

Machine extends Agent
String label

我搜索了一种解决方案,可以根据给定参数“name”查询所有代理,该参数将在 PersonfirstNamelastNameMachine 的标签上查找。

是否可以使用 jpql 查询?

谢谢

最佳答案

我有点晚了,但是自从querydsl 3.6.2(它纠正了instanceOf的使用)以来,你可以用java代码来做到这一点。

BooleanBuilder builder = new BooleanBuilder();
QAgent qAgent = QAgent.Agent;
builder.or(qAgent.as(QPerson.class).firstName.eq("someFirstName")
.and(qAgent.instanceOf(Person.class));

builder.or(qAgent.as(QMachine.class).label.eq("someLabel")
.and(qAgent.instanceOf(Machine.class));

Page<Agent> agentsPage = agentRepository.findAll(builder);

不利的一面是,我会重新考虑您的类结构,这将导致联合查询,如果您可以在父类(super class)上使用具有公共(public)属性的投影,也许生成的查询会更便宜。

关于java - 查找多个子类的不同属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com