问题标签 [bidirectional-relation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
doctrine-orm - 如何在没有级联选项的情况下从反向 MTO 关系端删除欠款?,如何更新关系的反向端?
如何在没有级联选项的情况下从反向 MTO 关系端删除欠款?,如何在没有级联选项的情况下更新关系的反面?
错误是如果我更改房间 (MTO) 的地址 (OTM),房间仍保留在以前的地址中,尽管我将其删除。
如果我检查房间的地址 - 它是正确的新地址。但是,如果我检查地址中的房间,它们是错误的,因为存在已被删除的房间。
也许有一个命令我将如何刷新实体?或者命令我如何从地址中删除房间?或者也许不可能在实体级别进行,我将在控制器操作级别进行?
这篇文章有一个不可能的评论:Doctrine: can't removeElement from inverse side of the relationship
这只是一个关于双向 MTO 关系的说明,通常很难将房间转移到另一个地址,除非是船/帐篷/货车。
ps 我知道在 foreach 循环内刷新不好,但我无法清除实体管理器,因为我将在第二个循环中使用实体。无论如何,这些环路很少,只有 5 个地址和 20 个房间。
//控制器动作,夹具种类
//房间实体
//地址实体
hibernate - 从休眠中的实体删除双向映射后出现异常“org.hibernate.type.SerializationException:无法反序列化”
当我从客户端模型中删除 ManyToOne 映射时,我遇到了异常,下面是我的实体
应用程序实体如下所示:
客户端实体如下所示:
我已经评论了来自客户端数据的多对一映射并尝试获取应用程序。但低于错误。
hibernate - 如何打破休眠中的无限父子循环
我有一个带有页面的应用程序,每个应用程序都可能有子页面:
Page.java
我想<< Back to parent page
在每个页面上显示一个链接,并链接到它的所有子页面:
view-page.html
这会导致无限循环父-子-父-...
我尝试使用@JsonIgnore,但后来我丢失了我需要的信息(无论是父母还是孩子)。我还尝试用 . 注释父@JsonManagedReference
页面和子页面列表@JsonBackReference
。然后我可以看到父母,但看不到孩子。我的下一步将是尝试编写自定义序列化程序。
所以我的问题是 - 有没有人知道我怎样才能获得一个parentPage
财产并且仍然能够看到孩子而不进入无限循环孩子 - 父母 - 孩子 - 父母......?
java - 同一类型实体的多对多关系
我有一个实体如下。我很好奇是否可以创建关系,正如我将用示例描述的那样:
- 我正在创建 2 Person实体Michael和Julia。
- 我正在将 Julia 添加到 Michael 的朋友集中。
之后,我将 Michael 作为 JSON 响应检索,并且 Julia 在响应中可用。但是当我检索 Julia 时,她的朋友集是空的。我想通过只保存友谊的一侧来创建双向友谊关系。我想在不做任何其他操作的情况下让迈克尔加入 Julia 的朋友圈。我认为它必须由 Hibernate 管理。有可能吗?我应该怎么做?
/li>
这是我创建友谊的服务层代码:
相关问题: 同一实体类型的双向多对多 N+1 查询
更新了源代码,此版本运行正常。
hibernate - 休眠删除父级
当我想在 Hibernate 中删除父级时,如果有子级,是否有引发异常的机制?
如果产品属于该类别,则不删除类别。
forms - 保存多对多关系的反面
我试图使在关系的反面保存关系成为可能。我知道这在 Doctrine 中是不可能的,但我发现各种文章都显示了这种可能性。问题是所描述的方式对我不起作用。
我的出发点:
我在多对多关系中有两个实体。
对于这两个实体,我都有 getter、setter 和 add 和 remove 方法。它们看起来像这样(都一样):
因此,在这种情况下,我拥有的是布局。此外,我有两个实体的 FormTypes:
最后是我的控制器(布局控制器看起来一样):
可能的解决方案:
我为我的所有实体使用了 Symfony 表单,因此应该可以将 a 添加'by_reference' => false
到特定字段。例如,我在这里找到了这个解决方案:
https ://afilina.com/doctrine-not-saving-manytomany
如您在上面看到的,我已经添加了该选项。
我的问题:
第一方面,保存布局并向其中添加小部件,效果很好。但另一方面,保存 Widget 并向其添加布局不起作用。为什么呢?我正在使用最新版本的 Smyfony (4.0.10)。这可能是问题吗?
感谢帮助!
java - 添加新条目时如何防止从双向多对多集合中检索所有条目
我想知道如何防止从双向多对多集合中检索所有条目,同时将新条目添加到该集合中。我有用户实体,它与用户组实体具有双向关系。当我在用户实体中添加组时,它将用户添加到组中,并且用户组是父级。问题是,如果我向用户添加了很多组(比如说 20 个),那么用户也会被添加到每个组中,并且从每个组中检索所有用户(每组 100 多个)。它使事务花费大量时间并显示出明显的滞后,而我只想将 UserGroup 插入到 User 的 userGroups 集合中,而无需从这些组中选择其他用户。
用户.java
用户组.java
使用方法
所以我可以在控制台中看到,为我正在迭代的组选择了所有连接表条目
编辑:这是执行的代码,我不知道为什么。
java - JPA双向映射未获取深度映射数据
我有以下具有双向映射的 JPA 实体。我正在尝试将所有 featureGroup 提取到 DTO 中。
如果我确实 findAll 在 featureGroup 并迭代以获取其功能。它不来。我对 JPA 还不是很熟悉。我的方法正确吗?
以下是我的实体。
然后
然后
和
然后
我尝试获取如下对象:
我实施的是不正确的吗?我也试过了fetch=FethType.EAGER
。但仍然无法正常工作。
java - Java/Spring - 对象引用未保存的瞬态实例
好吧,我的问题与我尝试在方便的存储库中使用相应的默认 CRUD 方法保存具有其他实体(AcmeFloat)集合的实体(Parade)有关(代码附在下面)。当它到达 save() 方法时,它会抛出异常。
我试图保存需要手动更新的 AcmeFloat 类的相关实体,但是,无论我做什么(无论是先保存更新的 Parade,然后更新并保存每个 AcmeFloat 还是由内而外)都会引发异常。
所以我进入了 Stack Overflow,我发现的解决方案是在 @ManyToMany 注释中放置一个 'cascade=CascadeType.ALL' ,但没有成功。我也尝试做这两件事,但也失败了。
这是代码:
游行(领域类):
AcmeFloat(域类):
ParadeForm(表单对象):
游行存储库:
AcmeFloatRepository:
游行服务:
AcmeFloatService:
游行控制器:
在 Create 案例中,流程是下一个:在填写表单和发送后的创建视图中,在 ParadeController 中调用 save() 方法。它的输入是一个 id=0 的 ParadeForm 对象。“parade”(在这种情况下是新的 Parade,在版本的情况下是更新的 Parade)和“oldParade”(在这种情况下是 null,但在更新情况下是更新前的 Parade)对象无论如何都会被创建和声明。然后,我们进入 try/catch。首先,它获取 parade 的 acmeFloats 以更新它们,在他们的 parades 集合中添加刚刚创建的 Parade。但是,在第一次尝试保存时,它会抛出以下内容:
首先保存新的 Parade 会得到相同的结果。如果它是一个版本(因此 Parade 之前存在并且可能有 AcmeFloats),我打算找到已从 Parade 中删除的 AcmeFloats 并更新它们,然后保存 Parade。所以我需要编辑案例中的 oldParade 来检查我必须从哪些 AcmeFloats 中删除 Parade。
另外,我不知道我是否必须用@ManyToMany 中的级联来做所有这些事情,但只是在重建后保存游行,但它无论如何都不起作用,所以我决定发布那部分代码以便你知道没有级联它是如何工作的。
在上个月和之前,我一直在处理这个问题。提前致谢。
编辑1:
当我在存储库中保存后放置一个 flush() 时,它会在保存时引发以下异常:
hibernate - JPA:尝试从双向多对多关系中删除实体
我尝试从 ManyToMany-Relation 中删除一个实体,但是在我的存储库保存父实体后,什么也没有发生。
用户存储库:
抽象实体
用户实体
角色实体:
用户服务:
在我的控制器中,我称之为
我必须使用 entityGraph,因为我不想使用 Fetch.Eager。
您知道为什么我不能从用户中删除角色吗?我也尝试了 Cascade.Remove - 但这并不能解决问题并且是不好的做法,我猜。
编辑:当我打电话时
我要从关系中删除的实体被删除。但是我认为通过 CascadeType.Persist 在 userRepository 上调用 save 来更新用户的所有内容?为什么我要另外调用角色的保存?