当前位置: 首页 > 知识库问答 >
问题:

选择实体包含列表的位置,哪些元素有另一个列表

单耘豪
2023-03-14

我正在用spring JPA编写一个JPQL查询,我有以下场景。我有一个实体边际,其中包含一个PerPeriodMargin列表,而PerPeriodMargin的每个元素都包含一个边际因子列表。代码:

@Entity
public class Margin {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @OneToMany(mappedBy = "margin", cascade = CascadeType.ALL, orphanRemoval = true)
  private List<PerPeriodMargin> perPeriodMargins;
}


@Entity
public class PerPeriodMargin{
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @ManyToOne
  private Margin margin;
  @OneToMany(mappedBy = "perPeriodMargin", cascade = CascadeType.ALL, orphanRemoval = true)
  private List<MarginFactor> marginFactors;
}

@Entity
public class MarginFactor{

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @ManyToOne
  private Underlying underlying;
  @ManyToOne
  private PerPeriodMargin perPeriodMargin;
}

我想在一个jpql查询中选择所有MarginFactor下面的MarginFactor.id作为参数传递的Margin?有什么建议吗?

到现在都是接缝好。

最后,还有另外两个试图获取边际因子的查询。

选择marginfact0_.per_period_margin_id作为per_peri6_9_0_,marginfact0_.id作为id1_9_0_,marginfact0_.id作为id1_9_0_,marginfact0_.id作为id1_9_1_,marginfact0_.id作为id1_9_1_,marginfact0_.bid作为bid2_9_1_,marginfact0_.bid作为notional3_9_1_,marginfact0_,notional作为offer4_9_1_,下1_。数字为digits2_24_2_,下1_。显示为display3_24_2_,下1_。启用为enable4_24_2_,下1_.enable_buy为enable_b5_24_2_,下1_.enable_sell为enable_s6_24_2_,下1_.focus_digits为focus_di7_24_2_,下1_.focus_position为focus_po8_24_2_,下1_.left_currency_id为left_cu11_24_2_,下1_.right_currency_id为right_c12_24_2_,下1_.temporary_disable为tempora10_24_2_,currency2_.id为id1_3_3_,currency2_,digits为digits2_3_3_,currency2_.enable_buy为enable_b3_3_3_,currency2_.enab以enable_s4_3_3_,currency2_.名称为name5_3_3_,currency2_.符号为symbol6_3_3_,currency2_.temporary_disable为temporar7_3_3_,currency3_.id为id1_3_4_,currency3_.digits为digits2_3_4_,enable_buy为enable_b3_3_4_,currency3_,enable_sell为enable_s4_3__,currency3_,name5_3_4_.temporary_disable作为temporar7_3_4_from margin_factor marginfact0_left外部联接底层underlying1_on marginfact0_.underlying_id=underlying1_.id left外部联接货币currency2_on underlying1_.left_currency_id=currency2_.id left外部联接货币currency3_on underlying1_.right_currency_id=currency3_.id where

正如我们在最后一个查询中看到的,在perperiodmarginid上只有一个where条件。我认为它还必须包含底层条件,因为这个查询负责获取边缘因子,在这里我们必须提取具有特定UnderlyIngID的数据。

我对这个问题很认真,请有人解释一下,或者这是Hibernate中的一个bug!

共有1个答案

景哲
2023-03-14

以下是查询:

select m 
FROM Margin m 
JOIN m.perPeriodMargins ppm 
JOIN ppm.marginFactors mf 
JOIN mf.underlying und 
WHERE und.id = :id
 类似资料:
  • 问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在

  • 我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢

  • 问题内容: 如何使用JOIN从一个表中选择所有列,从另一个表中仅选择一些列?在MySQL中。 问题答案: 只需使用表名: 这将选择所有列和列和从。

  • 我想知道的哪些元素在中。我需要输出一个有序的布尔值列表。但是我想避免循环,因为两个列表都有超过200万个元素。 这就是我所拥有的,它是有效的,但它太慢了: 我可以拆分列表并使用多线程,但如果可能的话,我更喜欢一个更简单的解决方案。我知道一些函数,比如sum()使用向量运算。我在找类似的东西。 如何让我的代码更高效?

  • 我在数据库中有一个包含(id、日期、类别、行、持续时间)的表,我每天都有许多注册表,例如(1,12/12/2014,cat1,ligne1,12)(2,12/2014,cat2,ligne1,10)(3,12/12/2014,cat3,ligne2,23) (4,13/12/2014,cat1,LINGE1,10)(5,13/12/2014,cat2,LINGE1,20)(6,13/12/2014

  • 假设我有一个这样的列表: 我想要一个只包含嵌套列表的第一个元素的列表。我可以通过这样返回另一个列表来做到这一点 这个有捷径符号吗?