无需映射或加入即可休眠oneToMany

时间:2018-11-20 08:50:43

标签: hibernate jpa

是否可以在没有映射或joinColumn的情况下将实体列表添加到另一个实体中?

我想要的是类似的东西

EntityA{
@OneToMany
List<EntityX> allEntitiesX
}

此列表的行为应类似于

Query query=session.createQuery("from EntityX"); 
List allEntitiesX=query.list();

因此,如果我加载EntiyA,我也可以访问所有其他实体EntityX(延迟加载),而无需“离开” EntityA。由于我们的旧程序,我无法添加新表来连接两个实体,因为我必须更新所有现有的客户数据,并教会旧系统以相同方式处理此joinTable。

如果可能的话,能够过滤条件也很好。

我为什么要它: 在我们的系统中,每个“ mainEntity”都可以具有属性(EntityX)。 每个属性实体都有一个值列表,并且这些值通过joinTable映射到“ mainEntity”。 如果我想添加一个方法setProperty(propertyName,value),则遇到无法找到正确的propertyEntity添加我的值的问题。 设置者必须移到我可以执行entityManager查询的地方。

1 个答案:

答案 0 :(得分:0)

是的,但是有可能会创建另一个第三张表,但实际上您不需要第三张表,因为EntityX的每一行都将包含一个EntityA列。

您可以执行的最简单的映射如下所示。

    sh-4.2$ ls -l /var/lib/jenkins/jobs/Pipeline/workspace/target/test-classes
total 66950
-rwxrwxrwx.  1 default 2002  5778064 May  1  2014 chromedriver
-rw-r--r--.  1 default 2002  6465536 Nov 20 08:27 chromedriver.exe
-rw-r--r--.  1 default 2002    19912 Nov 20 08:27 ExcelData.xlsx
-rw-r--r--.  1 default 2002     9559 Nov 20 08:27 ExportExcel_old.xlsx
-rw-r--r--.  1 default 2002     9324 Nov 20 08:27 ExportExcel.xlsx
-rw-r--r--.  1 default 2002 56131454 Nov 16 05:41 google-chrome-stable_current_x86_64.rpm
-rw-r--r--.  1 default 2002    26055 Nov 20 08:27 InfraSetup_Sanity_Suite.class
drwxr-sr-x.  2 default 2002     4096 Nov 20 08:27 Libraries
-rw-r--r--.  1 default 2002    13214 Nov 20 08:27 NamingConvention.xlsx
drwxr-sr-x.  2 default 2002     4096 Nov 20 08:27 Navigations
-rw-r--r--.  1 default 2002    12415 Nov 20 08:27 OpenShift_Services_QA.class
drwxr-sr-x. 16 default 2002     4096 Nov 20 08:27 Pages
-rw-r--r--.  1 default 2002     9943 Nov 20 08:27 RouteTables_Routes.xlsx
-rw-r--r--.  1 default 2002    11220 Nov 20 08:27 RouteTables_SubnetAssociations.xlsx
-rw-r--r--.  1 default 2002     4837 Nov 20 08:27 SecurityCheckList.class
-rw-r--r--.  1 default 2002    15858 Nov 20 08:27 SecurityGroup_IB.xlsx
-rw-r--r--.  1 default 2002    16265 Nov 20 08:27 SecurityGroup_OB.xlsx
-rw-r--r--.  1 default 2002    13445 Nov 20 08:27 Security_Groups.xlsx
drwxr-sr-x.  2 default 2002     4096 Nov 20 08:27 Test
-rw-r--r--.  1 default 2002      274 Nov 20 08:27 testng.xml

在另一个实体中

EntityA{
@OneToMany(mappedBy="entityA",cascade = CascadeType.ALL,fetch = FetchType.LAZY)
List<EntityX> allEntitiesX
}