问题标签 [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 投票
2 回答
1426 浏览

nhibernate - nhibernate 映射不保存/插入插入子类的键

在对我的映射进行了一些更改之后( 有关原因,请参阅我关于级联删除的其他问题),我尝试插入一个全新的对象及其所有子类。

在此之后出现了另一个问题,即将密钥插入数据库的问题。情况如下:

我有一个带有 2 层子类的对象,都是一个集合。

让我们调用对象 Parent,这个对象有一个子集合,并且这个集合中的每个实体都有自己的实体集合。映射如下。

父母对其的映射<set>

CollectionObject 的映射

第二个集合中对象的映射映射与上述类似。设想的情况是,我保存父级,这将触发子类/集合的保存。

例如,我有 ID = 1 的 Parent,Parent 填充了 1 个集合,并且这个集合有自己的 1 个集合。

所以我保存父级,父级从数据库中获取一个 ID(本机 sql 身份)。现在,第一个集合应该将其 ParentID 属性填充为 Parent 刚从数据库中获得的 ID。并且该集合的集合应该使用 Child 从数据库中获取的 ID 填充其 ChildID,其方式与 Parent 获取其 ID 的方式相同。

现在发生的事情是(我在 NHProf 中检查了创建的 SQL)所有内容都被插入,具有自己的 ID,但是集合没有用其父类的 ID 填充它们的键列。(相反,它只是插入 0)

所以我的问题归结为,我忘记添加到我的映射中导致发生了什么?关键列不做我认为应该做的事吗?

如果我忘记在这里添加任何内容,请说出来。我很乐意提供更多信息。

更新

我认为问题可能与没有<many-to-one>标签的孩子有关。所以我尝试将其中一个添加到第一个子映射中。我想出了这个

但是,此设置给了我以下错误。 Exception occurred getter of Parent.ParentID

带有内部异常 {"Object does not match target type."}

可悲的是,这个错误并没有让我知道从哪里继续。

0 投票
1 回答
20394 浏览

hibernate - 休眠外键映射多对一

我已经研究了很长时间,但仍然无法弄清楚我的代码有什么问题。每个服务有多个配置文件,但每个配置文件只有一个服务。

在 Profile.hbm.xml 中。我加

这是映射它的正确方法吗?

0 投票
1 回答
1005 浏览

nhibernate - NHibernate:双向多对一问题

我在 NHibernate 中有一个双向关系:

如何在不设置 inverse="true" 并在 Child 上设置 Parent 属性的情况下保存它?
我不想这样做,因为从 POCO 的角度来看它没有多大意义。

或者,是否可以拦截在 NHibernate 代理集合(儿童)上调用的 Add?
在这种情况下,我将把 Parent 设置逻辑放在这里。

0 投票
1 回答
49157 浏览

hibernate - 休眠条件查询在键字段上使用 Max() 投影并按外主键分组

我很难将此查询(直接在数据库上工作)表示为 Hibernate(版本 3.2.5)中的条件查询:

到目前为止,这是我想出的不起作用,并引发could not resolve property: datetime of: common.entity.FtpStatus错误消息:

下面是 Netbeans 6.8 直接从数据库生成的相关参考配置:

FtpStatus.hbm.xml -

Connections.hbm.xml -

我知道我遗漏了一些东西,但是我在 hibernate 上的谷歌搜索还没有显示出来。或者,直接使用s.createSQLQuery()or的 SQL 查询s.createQuery()也是可以接受的,但我写那个的成功率更低......

0 投票
2 回答
35754 浏览

jpa - JPA @OneToMany 和复合 PK

我正在做一个 JPA 项目。我需要在具有三个主键的类上使用 @OneToMany 映射。您可以在此之后找到错误和类。

这是我的课程的源代码:

行动 :

允许 :

权限PK:

0 投票
1 回答
607 浏览

java - sql 中未使用 JoinColumn 名称

我在映射多对一关系时遇到问题,而数据库中没有设置确切的外键约束。我将 OpenJPA 实现与 MySql 数据库一起使用,但问题在于为插入和选择语句生成的 sql 脚本。

我有 LegalEntity 表,其中包含 RootId 列(等等)。我还有一个地址表,它的LegalEntityId列不可为空,并且应该包含引用 LegalEntity 的“RootId”列的值,但没有设置任何数据库约束(外键)。

地址实体被映射:

SELECT 语句(当获取法人实体的地址时)和 INSERT 语句被生成:

如果我从提到的语句中省略表属性,则会生成:

因此,LegalEntityId 不包含在任何语句中。

是否可以基于这种引用建立关系(到主键以外的列,数据库中没有外键)?还缺少什么吗?

提前致谢。

0 投票
3 回答
596 浏览

nhibernate - 从 1.0.2.0 到 2.1.2 的 Nhibernate 迁移和多对一保存问题

我们有一个带有 nhibernate 的旧的大型 asp.net 应用程序,我们正在扩展和升级它的某些部分。使用的 NHibernate 已经很老了(1.0.2.0),所以我们决定升级到(2.1.2)以获得新功能。HBM 文件是通过 MyGeneration 的自定义模板生成的。一切都很顺利,除了一件事。

假设我们必须对象博客和帖子。博客可以有很多帖子,所以帖子会有多对一的关系。由于此应用程序的操作方式,关系不是通过主键,而是通过 Blog.Reference 列。

示例映射和 .cs 文件:

和类文件

现在假设我有一个 ID 为 1D270C7B-090D-47E2-8CC5-A3D145838D9C 和参考文献 1 的博客

在旧的休眠中,这样的事情是可能的:

但是,在新版本中,我得到一个异常,无法将 NULL 插入 Post.BlogId。据我了解,在旧版本中,对于 nhibernate 来说,拥有 Blog.Reference 字段就足够了,它可以通过该字段检索实体,并将其附加到 PostEntity,并且在保存 PostEntity 时,一切都会正常工作。据我了解,新的 NHibernate 仅尝试通过 Blog.Id 检索。

如何解决这个问题?我无法更改数据库设计,也无法将 Id 分配给 BlogEntity,因为对象超出了我的控制范围(它们像这样从外部源预填充为通用“ojbects”)

0 投票
0 回答
2203 浏览

nhibernate - NHibernate,当数据库中存在列时无法加载实体

这可能是一个简单的问题,但我就是想不通。

我有一个与“地址”多对一的“公司”类,它与“城市”中的复合 id 多对一。当我加载“公司”时,它会加载“地址”,但如果我调用“地址”的任何属性,我会收到错误消息:

内部异常是:

我不明白的是我可以在 sql server 2005 中运行查询并且它可以工作,而且这两个列都存在于地址表中。

这是我的 HBM:

这是我调用公司的代码:

最后这是我得到错误的地方:

“用户”已经用上面的代码初始化:

谢谢。

0 投票
2 回答
9886 浏览

java - Hibernate注释多对一不将子添加到父集合

我有以下带注释的 Hibernate 实体类:

我的意图是 Cat 和 Kitten 之间的双向一对多/多对一关系,其中 Kitten 是“拥有方”。

我想要发生的事情是,当我创建一个新的 Cat,然后是一个引用该 Cat 的新 Kitten 时,我的 Cat 上的 Set of kittens 应该包含新的 Kitten。但是,这不会在以下测试中发生:

即使在重新查询 Cat 之后,Set 仍然是空的:

我对 Hibernate 的期望是不是太高了?或者是我自己管理收藏的负担?(注释)文档没有表明我需要在父对象上创建便利addTo*/方法。removeFrom*

有人可以告诉我我对 Hibernate 与这种关系的期望是什么吗?或者,如果没有别的,请指出正确的 Hibernate 文档,它告诉我我应该期待在这里发生什么。

我需要做什么才能使父集合自动包含子实体?

0 投票
1 回答
336 浏览

indexing - 用休眠搜索索引多对一关系的最佳方法是什么?

我有一个具有多对一映射的实体。(产品 1-* 区域,单向关联)

存储这种关系的索引的最佳方法是什么?

所以它可以很容易地用来过滤搜索查询。