首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Hibernate HQL中,当多个子类具有相同名称的属性时,如何让join获取子类的链接实体?

在Hibernate HQL中,当多个子类具有相同名称的属性时,如何让join获取子类的链接实体?
EN

Stack Overflow用户
提问于 2016-09-01 08:13:12
回答 1查看 809关注 0票数 6

摘要

在Hibernate中,我试图从main类的子类中保留JOIN FETCH属性,其中多个子类具有相同名称的属性。然而,Hibernate只获取第一个子类的链接实体,而不是其他的。

背景

我正在模拟一个基于冬眠的系统中的基因组特征(基因、转录本和外显子)和遗传变异。基因、转录本和外显子都是GenomicFeature的亚类,每个变体都可以有零到多个GenomicFeatures.反过来,基因有零对多的转录本--就像外显子一样--转录本也有零到多的基因和外显子。这些关系中的每一种都是懒洋洋的。有时,我想获取一个变异体及其所有的基因组特征,以及从直接的基因组特征中连接的所有基因组特征。我想取一个特定的变体,与该变异相关的基因/转录本/外显子,所有基因的转录本,转录本的所有基因和外显子,以及外显子的所有转录本。

问题

当我对上面的内容进行查询时,除了基因的转录本不被提取,只有外显子的转录本被提取外,它是有效的。我想这是因为房地产-- gene.transcripts和exon.transcripts --有着相同的名字。

我试过什么

PagingAndSortingRepository中的主查询如下

代码语言:javascript
运行
复制
    @Query("SELECT v FROM Variant v"
        + " LEFT JOIN FETCH v.variantGenomicFeatures AS vgf"
        + " LEFT JOIN FETCH vgf.genomicFeature AS gf LEFT JOIN FETCH gf.genes LEFT JOIN FETCH gf.exons LEFT JOIN FETCH gf.transcripts"
        + " WHERE"
        + "     v.id = (:id)")
public Variant findOneByIdAndGenomicFeaturesEagerly(@Param("id") Integer id);

我试过两次加入genomicFeature,一次是为了基因,一次是为了转录和外显子,但这行不通。

我尝试过只选择基因(WHERE TYPE(gf) = Gene),但是看看它生成的查询,它仍然只连接Exon的转录本,然后返回这些基因。

EN

回答 1

Stack Overflow用户

发布于 2018-02-28 14:57:33

我想通了。只是起作用了。我的HQL中有语法错误。

当受歧视的子类具有不在根类中的属性/列时,当在FROM语句中使用根类时,所有分发器子类的所有属性都可以在HQL中访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39266153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档