gpt4 book ai didi

java - 如何在Hibernate中选择索引列?

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:42 24 4
gpt4 key购买 nike

我有一个数据库表与 typevalue 和外键作为索引进行通信,该外键映射回声明如下的 Person 表:

@Table(name = 'communication', schema = 'schema')
@org.hibernate.annotations.Table(appliesTo = 'communication', indexes = {
@Index(name = "idx_communication_person_id", columnNames = { "person_id" })
}
)

Person 对象映射为此:

@OneToMany(fetch = LAZY, cascade = ALL, orphanRemoval = true)
@JoinColumn(name = "person_id")
@OrderColumn
@Index(name = "idx_communication_person_id")
private final List<Communication> communications

现在我想使用 Hibernate 创建一个 HQL 查询,该查询基于此索引列进行选择,例如:

WHERE person.id in ( SELECT c.person_id FROM Communication c WHERE c.type = 3 AND c.value = 'john.doe@server.com' )

这不起作用,因为 HQL 此时不知道 c.person_id,因为 HQL 通常不知道索引列。

如何正确处理 HQL 中的索引,或者如果不可能:如何编写语句来归档与上面的类似 native 的查询相同的语句?

编辑:出于性能原因,不得有任何形式的 JOIN。

最佳答案

我认为你需要这样的东西:

SELECT p.* FROM person p 
JOIN p.communication c
WHERE c.type = 3 AND c.value = 'john.doe@server.com'

关于java - 如何在Hibernate中选择索引列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34268853/

24 4 0
文章推荐: java - 如何在 Camel 中路由使用 SOAP Web 服务的端点链?
文章推荐: javascript - 如何在不重新加载整个页面的情况下在 HTML 框中编写
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com