我有一个像下面这样的场景。
假设EntityA
有三个嵌套实体EntityB、EntityC、EntityD
。并且所有EntityB、EntityC、EntityD
都有几个嵌套的实体。
但是在选择entitya
时,它选择的是整个嵌套实体树。而我想取一个特定的分支。假设只提取实体A、EntityB
和EntityB
的所有子实体,留下EntityC
和EntityD
,那么我不确定如何做到这一点。随着spring,jpa将所有嵌套对象带回给我。
我正在使用下面的集合映射。
@Entity
@Table(name = "customer_party_mapping")
@Data
public class CustomerPartyMappingEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "customer_id")
private Integer custmerId;
@Column(name = "orgtype_id")
private Integer orgTypeId;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn(name = "customer_party_mapping_id")
@Fetch(value = FetchMode.SUBSELECT)
private List<CustomerPartyBookingLocationEntity> customerPartyBookingLocation=new ArrayList<CustomerPartyBookingLocationEntity>();
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn(name = "customer_party_mapping_id")
@Fetch(value = FetchMode.SUBSELECT)
private List<CustomerPartyFieldMappingEntity> customerPartyFieldMappingEntity=new ArrayList<CustomerPartyFieldMappingEntity>();
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn(name = "customer_party_mapping_id",referencedColumnName="id")
@Fetch(value = FetchMode.SUBSELECT)
private List<CustomerPartyOtherDocumentEntity> otherDocumentsList=new
ArrayList<>();
@OneToOne( cascade={ CascadeType.PERSIST, CascadeType.MERGE })
@JoinColumn(name = "customer_name_screening_id", referencedColumnName="id")
private CustomerNameScreeningEntity customerNameScreeningEntity;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn(name = "customer_party_mapping_id")
@Fetch(value = FetchMode.SUBSELECT)
private List<CustomerDocInfoTrackingEntity> customerDocInfoTrackingList=new
ArrayList<CustomerDocInfoTrackingEntity>();
}
我打电话给你
List<CustomerPartyMappingEntity> customerPartyMappingEntityList = customerPartyMappingRepository.findByCustmerId(customerid);
它获取所有嵌套映射的实体列表,而我只需要CustomerPartyMappingEntity
和它的CustomerPartyFieldMappingEntity
嵌套对象列表。
任何帮助都将不胜感激。
首先对嵌套实体使用fetchType.lazy
。然后可以使用@entitygraph
按名称提取嵌套实体,以及在存储库中使用它们的名称和.
提取嵌套实体。用于在attributePaths
中指定嵌套属性,如
@EntityGraph(attributePaths = {"customerPartyBookingLocation"})
和CustomerPartyBookingLocation
的嵌套属性类似
@EntityGraph(attributePaths = {"customerPartyFieldMappingEntity.subField"})
示例:
@EntityGraph(attributePaths = {"customerPartyBookingLocation", "customerPartyFieldMappingEntity.subField"})
List<CustomerPartyMappingEntity> findByCustmerId(Integer customerid);
注意:不能将@EntityGraph与@Query批注一起使用
我想使用即时加载在实体框架核心中获得多个嵌套级别的子表。我认为延迟加载还没有实现。 我找到了EF6的答案。 我的问题是,EF Core中无法识别选择 错误CS1061“雇员”不包含“选择”的定义,并且找不到接受“雇员”类型的第一个参数的扩展方法“选择”(您是否缺少使用指令或程序集引用?) 我包含的命名空间: EF Core中的选择选项是什么。
问题内容: 我创建了一个客户c#DropDownList控件,可以将其内容呈现为optgroup(不是从头开始,我编辑了一些在Internet上找到的代码,尽管我确切地了解了它的作用),并且工作正常。 但是,我现在遇到一种情况,我需要在下拉菜单中有两个缩进级别,即 但是,在上面的示例代码段中,它呈现的缩进量与相同。 有没有一种方法可以产生我想要的嵌套optgroup行为? 问题答案: 好的,如果有
问题内容: 在SQL Server中, 您可以这样编写嵌套的SQL: 这样,我可以获得一个可以嵌套到其他查询中的临时表T。 但是我不能在oracle SQL中做同样的事情 它给我 选择*有效,但这不是我想要的。有人知道该怎么做吗? 问题答案: 无论我显式指定别名还是指定,您发布的查询都对我有效。收到异常后,您可以发布正在运行的确切查询吗? 我的猜测是您要选择不带双引号的内容。如果在Oracle中使
我有一个简单的问题,但似乎找不到解决的办法。我使用的是EntityFramework核心版本2.0.1,希望在默认情况下加载所有实体。 示例: 但当我加载订单实体时,相关实体Customer及其内部地址为null 我所尝试的: 尝试升级到版本2.1并使用LazyLoadingProxies设置为false 这只是一个例子,我有多个嵌套级别的实体,我想在通用存储库中加载嵌套的相关数据,因此不能使用I
问题内容: 一个简单的问题: 在此示例中,我需要检索所有对象,但是这些对象必须具有不同的msgFrom字段。 当我使用 我收到下一个错误: 我想这是因为Hibernate只检索一列,但是我需要一个对象,而不是列。 我怎样才能做到这一点? 我认为我可以只滚动逗号,即 但是,如果我在这里有20多个字段怎么办?有一个简单的解决方案吗? 谢谢! 问题答案: 下面是示例查询: 或者,您也可以使用Criter
问题内容: 我想知道如何从具有类型列的表中进行选择语句?该列的类型定义为: UPD1 表定义为 如果我选择此列, 我将得到以下无意义的结果: 我只想打开这种类型。 问题答案: 像这样尝试: 这是一个sqlfiddle演示