摘要
在Hibernate中,我试图从main类的子类中保留JOIN FETCH属性,其中多个子类具有相同名称的属性。然而,Hibernate只获取第一个子类的链接实体,而不是其他的。
背景
我正在模拟一个基于冬眠的系统中的基因组特征(基因、转录本和外显子)和遗传变异。基因、转录本和外显子都是GenomicFeature的亚类,每个变体都可以有零到多个GenomicFeatures.反过来,基因有零对多的转录本--就像外显子一样--转录本也有零到多的基因和外显子。这些关系中的每一种都是懒洋洋的。有时,我想获取一个变异体及其所有的基因组特征,以及从直接的基因组特征中连接的所有基因组特征。我想取一个特定的变体,与该变异相关的基因/转录本/外显子,所有基因的转录本,转录本的所有基因和外显子,以及外显子的所有转录本。
问题
当我对上面的内容进行查询时,除了基因的转录本不被提取,只有外显子的转录本被提取外,它是有效的。我想这是因为房地产-- gene.transcripts和exon.transcripts --有着相同的名字。
我试过什么
PagingAndSortingRepository中的主查询如下
@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的转录本,然后返回这些基因。
发布于 2018-02-28 14:57:33
我想通了。只是起作用了。我的HQL中有语法错误。
当受歧视的子类具有不在根类中的属性/列时,当在FROM语句中使用根类时,所有分发器子类的所有属性都可以在HQL中访问。
https://stackoverflow.com/questions/39266153
复制相似问题