问题标签 [many-to-one]

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.

0 投票
1 回答
220 浏览

data-modeling - 创建双向多对一关系

嗨,我尝试创建一个 ManyToOne 关系但被卡住了。

我有一个 BILL 和一个 Booking Class

实际情况是:一个账单可以有很多预订。(1:m) Bill Class 应该管理关系 A Booking 只属于一个 Bill。(1:1 没有账单就不能存在预订)

如果我删除该法案,则应删除属于该法案的所有预订。如果我从账单中删除预订,则只有该预订应被删除。如果我删除预订,则该预订应从账单中删除。

到目前为止,我有这个模型:

比尔类

预订舱位

如果我删除Bill,所有预订也属于Bill已删除。但我不能BookingBill侧面或Booking侧面删除单个 。

我想念什么?

0 投票
1 回答
3032 浏览

hibernate - 避免 Hibernate 将一对多(或一对多)关联映射到数据库表中的关系表

我是休眠的新手。我注意到在 Hibernate 中,将 java 类映射到数据库表通常涉及关系表,甚至有时关系表不是必需的(例如在一对多关系中或相反)。

例如:

我是一个公司类和一个航班类,其中一个公司可以有许多航班(从公司到航班的一对多关联)。

我有以下使用休眠注释的代码:

这些类已成功映射到数据库中。并且有三个表,它们是:

  1. COMPANY(一个 ID 字段)
  2. FLIGHT(一个 ID 字段和一个 COMP_ID 字段)
  3. COMPANY_MANY_TO_ONE_FLIGHT(两个字段:MANY_TO_ONE_COMPANY_id 和 flight_id )

但是最后一张表COMPANY_MANY_TO_ONE_FLIGHT是hibernate添加的关系表,是多余的。

显然,FLIGHT表中有一个外键COMP_ID,去掉冗余关系表是合理的。

我怎样才能避免这种情况?就像通过修改注释一样。

0 投票
2 回答
250 浏览

mysql - 解决多对一、子前父表问题

在我的程序中,我需要从个人开始制作一个组织结构图,并将他们分组在经理之下,然后将这些经理分组在高级经理之下等......关于数据库我该怎么做?这是一个多对一的关系——我认为这是非法的和不可能的——就像从子表开始——个人——在创建它的父表——经理之前。如果有人可以帮助我指出设计数据库的正确方向,我将不胜感激!

----编辑----这是我的问题的更详细的解释:

假设我的程序的用户首先输入了 35 个他们想在他们将要从事的项目中使用的人。现在,可以创建几个可能的管理职位,并将员工/其他(下级)经理分配给这些职位。用户不必创建任何特定位置,但可以随意选择和分配。唯一的限制是总会有一位高级经理——我们称他为总裁——他应该(但不是必须)只为任何给定的经理(包括总裁)分配 5-10 人。所以在这个例子中,我们从 35 个人和一位总统开始。现在我们开始将这 35 个人分组到团队中,并指定其中一位为经理。假设用户决定有两队 6 人,两队 9 人,一个由 5 人组成的团队 - 每个小组都有一名个人成员被指定为该小组的经理。所以现在我们有 5 个团队,每个团队都有自己的经理,这五位经理现在将被分配给总裁。该程序会放手,但会警告用户最后一个团队中经理的人数少于 5(只有 4)。因此,用户现在(或在任何时候)可以返回并更改组织。所以假设他想解决这个问题并改变团队。于是,他将两支 9 人队伍中的一支打散,并给缺人的队伍分配了一个人。这使得最终计数为 3 个团队,每组 6 人(5 名个人成员和 1 名经理),一组 9 人(8 名独立人员和 1 名经理),以及一组 8 人(7 名独立人员和 1 名经理),并且分配了所有 5 名团队经理给总统。

只有在现实生活中,这才能被进一步分解——具有更多管理级别的巢穴。我怎样才能做到这一点?

下面乔·霍普夫加特纳的回答仍然有效吗?即使稍后会分配角色(在最初创建行之后),我是否可以只创建一个“角色”列?还是随时改变?这个自引用外键可以为空吗?(因为在尚未分配经理的情况下)或者我应该在将个人分配到一个团队后将他们移到一个单独的“团队”表中,一旦他们将经理移到一个“经理”表中'已被分配为经理,然后为引用经理表的团队表添加外键?

另外,我正在使用 MySQL,那么您不能使用自引用 ON UPDATE CASCADE 或 ON UPDATE SET NULL 操作这一事实是否会影响我的特定情况(因为用户无疑会经常更改分配)?

非常感谢你帮我解决这个问题!!!

0 投票
3 回答
1902 浏览

nhibernate - 多对一和where子句

我正在研究一个非常复杂的遗留数据库。
客户表与供应商共享,创建此结构的人使用标志来识别客户。由于我只对处理定义为客户的记录感兴趣,因此我在映射中添加了 where 子句:

如您所见,我已经使用此子句预先过滤了所有客户:ANFCLI = 'Y' 如果我查询客户(使用 where 子句),一切都可以正常工作:

但是,如果我查询订单表 - 我有一个多对一的关联:

实体客户的过滤器丢失。
我在某处读到 where 子句不适用于关联,您必须在集合(袋子、集合等)上使用 where 子句,但是,我如何使用多对一来做到这一点?

谢谢你的帮助。

0 投票
3 回答
76 浏览

php - PHP - 如何将多个字符串映射到单个字符串?例如 'en','english','eng' --> 'eng'

我想要字符串的多对一键->值映射。

到目前为止,我唯一的想法是进行一系列这样的测试,但这并不是很不雅。

什么是更好的解决方案?

0 投票
3 回答
3622 浏览

java - JPA - OneToMany、ManyToOne、OneToOne 问题

给定以下两个实体:

我想要数据库中有两个表。一张给父母,一张给孩子。但是 Hibernate 创建了三张表:一张给父母,一张给孩子,一张给他们加入(有两个字段的表格)。

即使我@OneToOne在 Child 类中添加了 parent 属性,我仍然得到相同的结果。

我错过了什么?

0 投票
2 回答
8100 浏览

hibernate - 以编程方式为休眠中的多对一指定延迟加载

我正在使用带有 Spring 3.0.5 的 Hibernate 3.6。

我有一个用户对象的以下映射

用户与组织具有多对一的关系。通常,我希望急切加载该关系,因此映射坚持默认设置lazy=false(不指定任何内容)。

在某些情况下,我不想急切地加载组织。我尝试用标准指定这个

但是获取模式被忽略了。Hibernate 仍然急切地加载组织关系。几个小时以来,我一直在反对这个。任何帮助,将不胜感激。

0 投票
1 回答
22228 浏览

jpa - 如何在 JPA 中创建包含@ManyToOne 属性作为@EmbeddedId 的复合主键?

我在问并回答我自己的问题,但我并不认为我有最好的答案。如果你有更好的,请发布!

相关问题:

我有一对具有简单聚合关系的类:一个的任何实例都拥有另一个的一些实例。拥有的类有自己的某种主键,并且拥有的类通过相应的外键与这个类具有多对一的关系。我希望拥有的类有一个包含该外键和一些附加信息的主键。

为了争论,让我们使用那些常年最喜欢的,Order 和 OrderLine。

SQL 看起来像这样:

我想使用 JPA 将其映射到 Java 中。Order 是微不足道的,OrderLine 可以用@IdClass 处理。这是代码- 代码是相当传统的,我希望你能原谅我的特质。

但是,使用@IdClass 涉及编写一个复制OrderLine 中的字段的ID 类。我想避免这种重复,所以我想改用@EmbeddedId。

但是,这样做的天真尝试失败了:

OpenJPA 拒绝将其用作@EmbeddedId。我没有尝试过其他提供者,但我不希望他们成功,因为 JPA 规范要求组成 ID 类的字段是基本的,而不是关系。

那么,我能做什么?我如何编写一个其键包含@ManyToOne 关系但作为@EmbeddedId 处理的类?

0 投票
7 回答
127591 浏览

java - JPA:单向多对一和级联删除

假设我有一个单向 @ManyToOne关系,如下所示:

如果我有一个父 P 和子 C 1 ...C n引用回 P,在 JPA 中是否有一种干净漂亮的方法可以在删除 P 时自动删除子 C 1 ...C n(即entityManager.remove(P))?

我正在寻找的是类似于ON DELETE CASCADESQL 的功能。

0 投票
1 回答
575 浏览

many-to-many - CRM 4.0 业务单位实体,无法创建 N:1/N:N 关系

如题,

我正在尝试在 CRM 4.0 中创建 N:1 (businessunit : custom_entity) 关系

UI中New Many-to-One Relationship缺少按钮选项

我可以为其他实体创建 N:1 关系,但不能为businessunit

这是 CRM 4.0 中众所周知的限制吗?

还是我在系统中配置错误?