【发布时间】:2011-09-28 15:30:41
【问题描述】:
我有 3 个实体 Agent、Person 和 Machine
abstract Agent
Long id
Person extends Agent
String firstName
String lastName
Machine extends Agent
String label
我搜索了一种解决方案,以在给定参数 "name" 上查询我的所有代理,这将在 Person 的 firstName 和 lastName 或 Machine 的标签上查找。
jpql 查询可以吗?
谢谢
【问题讨论】:
-
你能向 Agent 添加一个抽象方法 getName() 来返回适合类型的名称吗?
-
是的,我可以更新代理类,但是我如何在 jpa 查询中使用这个方法?
-
像任何其他 JavaBean 一样。我假设 JPA 使用 getter 而不是底层字段。
-
感谢您的帮助,但我找到了“类似 sql”的解决方案
select a from Agent a, Person p, Machine m where (p.id = g.id and (p.lastName like :name or p.firstName like :name) or (ma.id = g.id and ma.name like :name) -
如果您希望能够匹配名字或姓氏,这将最有效。