问题标签 [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 回答
1940 浏览

hibernate - 用于多对一关联的 Hibernate L2 缓存

我对休眠有点陌生,正在尝试使用 ehCache 实现二级缓存。尝试使用 L2 缓存检索多对一关联时遇到问题。我的 foo.hbm.xml 文件中的关联映射如下所示:

(这是我的实际 hbm.xml 文件的一个非常缩短/修改的版本,希望其中没有错误)

请注意,我只缓存“bar”,而不是“foo”。但是,当我使用此映射运行单元测试时,出现以下错误:

严重:解析 XML 时出错:XML InputStream(40) 元素类型“多对一”的内容必须匹配“(meta*,(column|formula)*)”。

当我取出它时,它工作正常,只是没有 L2 缓存。仅仅是多对一的关系不支持缓存吗?如果是这样,关于如何解决这个问题的任何建议?

仅供参考,我有另一个单元测试直接读取“bar”(即不通过关联)并且它工作正常 - 第二次我得到一个“bar”它从 L2 缓存中获取它,所以我相当有信心我有其余配置正确完成。很抱歉,仍然在石器时代工作,所以没有注释等。

0 投票
2 回答
1748 浏览

jpa - Eclipselink 在多对一关系中执行意外插入

我在两个对象之间有一个非常基本的关系:

DB 中只有一组有限的 StatusOfA。
我在事务中对 A 执行更新:

saveOrPersistA 方法在这里合并“a”。

我希望 Eclipselink 只对“a”执行更新以更新 StatusOfA,但它正在对 StatusOfA 表执行新插入。然后甲骨文抱怨独特的约束冲突(Eclipselink 试图坚持的 StatusOfA 已经存在......)。这里没有级联,所以问题不存在,Hibernate(在 JPA2 中)表现得异常。
在同一个项目中,我已经建立了一些更复杂的关系,我很惊讶地看到这里的关系不起作用。
在此先感谢您的帮助。

0 投票
1 回答
1008 浏览

java - JPA多方关系删除操作

我想删除具有相同 ExternalProcessedFileInfo 的 ExternalProcessed 文件但此查询失败。当 Relation 恢复为 @onetomany 并在删除时级联时很容易,但我没有找到 ManytoOne 关系的任何有用示例。

这是我要运行的代码,它将为选择查询运行。



0 投票
2 回答
2810 浏览

java - JBoss Envers 多对一审计

假设场景:我有两个模型:AuthorBook. 该Book模型对于 具有多对一关系Author

假设我只想审核对Book. 我用 注释该类@Audited,但收到一个错误,抱怨该getAuthor()属性Book无法被审计,因为Author没有被审计。

为什么是这样?我想审核这本书的作者是否更改,但我不在乎作者昵称是否更改。在我的数据库中有一个author_aud表是没有意义的,但显然这是不可能的,除非我继续审计Author模型或用一个属性专门注释该getAuthor()属性@Audited(...)以忽略该关系。但是,如果我这样做,我将不再能够审核图书/作者关系。

0 投票
3 回答
2503 浏览

c# - NHibernate 2.1.2 未保存的瞬态实例

我已经阅读了很多问题和答案,但我找不到我的问题的解决方案。当我从 NHibernate 1.2.1 迁移到 2.1.2 时,会出现问题。我有这个常见的错误:

对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。类型:Mikro.FareOn.Modules.Cards.Interface.BEC.CRResidenceRegion,实体:Mikro.FareOn.Modules.Cards.Interface.BEC.CRResidenceRegion

主类CRResidence的映射:

与多对一相关的类之一:

CRResidenceRegion 类的实现:

我尝试了所有类型的级联,但任何级联都无法正常工作。但就我而言,我更喜欢 cascade = "none"。我有客户端,通过在一个 NHibernate 会话中调用服务器端的方法来加载对象 CRResidenceRegion。加载 NHibernate 会话后关闭。客户端上的对象是正确的,数据库中的正确 ID 等等。然后给CRResidence对象赋值CRResidenceRegion对象。然后在服务器端调用方法:

我有很多这样的对象,当我迁移到 NHibernate 2.1.2 时出现了这个问题。在某些情况下,在定义级联样式后效果很好(“无”和“全部”一样有效,我需要)。可能是 NHibernate 的配置文件中的问题。

问题的先前定义:当我尝试插入或更新 CRResidence 的实例时,出现关于未保存的瞬态错误的错误。CRResidenceRegion的Instance完全初始化了,包括Id,所以没有问题。我在 Id 上实现了 Equal 方法。我试图清除缓存,但没有帮助。当我将级联更改为保存更新时,它可以工作,但是 CRResidenceRegion 的记录是重复的。一种解决方案是在保存 CRResidence 之前,我在同一会话中从数据库中读取 CRResidenceRegion(在下面的代码中注释),但这是不可接受的。

似乎 NHibernate 可能已经失去了对 CRResidenceRegion 的引用,并认为它是新创建的,但事实并非如此。

0 投票
1 回答
466 浏览

java - 如何对多对一关系强制执行孤立删除

如何在多对一关系上强制执行孤立删除,上面的代码片段在 Hibernate 3.3.x 中为我们工作,但在迁移到 3.6.5.Final 后它在代码中显示为警告。是否有类似 orphanRemoval = true 的等效标志应用于@OneToMany 符号?

0 投票
1 回答
494 浏览

java - 如何防止插入时不必要的选择?

我有以下场景(在 Java / Hibernate 中):

  • 我有两个实体类:X 和 Y。X 与未级联的 Y 有一个 @ManyToOne 关联。
  • 我创建了一个 X 的(非托管)实例 x 和一个 Y 的(非托管)实例 y,并在 x 中填充了对 y 的引用。y 中唯一填充的字段是主键。
  • 实体 y 在底层数据库中已经有对应的行,但实体 x 是新的。
  • 我坚持实体 x。

当我执行这个场景时,我希望看到一个查询:INSERT x。然而,实际发生的是 Hibernate 执行了两个查询:

  • 选择 y
  • 插入 x

此外,我还注意到,在 x 的持久化之后,对 y 的引用实际上并没有成为托管的,并且会话中没有 Y 的实例!那么,为什么要执行 y 上的 SELECT 呢?有没有办法防止这种行为?

0 投票
2 回答
30046 浏览

jpa - 为 OneToMany 关系构造 JPA 查询

我有这两个实体

1)我想构建一个查询,说获取所有 A 至少有一个 B 名称为 =“mohamede1945”

2)我想构建一个查询,说获取所有没有名称为“mohamede1945”的B的A

有人可以帮我吗?

0 投票
1 回答
3279 浏览

java - Hibernate @ManyToOne 删除一侧的条目,在多侧将 FK 设置为 NULL

我正在尝试学习使用 Hibernate,但可能我不理解@ManyToOne和反向关系。我有两个实体AuthorDepartment. 一个作者有一个部门,一个部门有许多作者。

当我删除作者时,部门不会发生任何事情。当我删除部门时,作者表中的 FK 应更新为NULL值(不应删除作者)。

我找到了很好的倒置解释,并发现这Author是一个拥有方,根据这个线程,当我删除子(部门)时,FK 应该设置为NULL. 但它不会发生,因为只删除了 Department 并且 FK 保留在 Author 表中(这导致org.hibernate.ObjectNotFoundException: No row with the given identifier exists)。

当我在实体中添加CascadeType.REMOVE注释@OneToMany时,Department所有与部门相关的作者也会被删除。上述两种状态都是不可取的。我只想删除 Department 并将 Author 表中的 FK 设置为NULL. 怎么做?

AuthorDepartment带有注释的实体:

提前致谢

0 投票
1 回答
4317 浏览

hibernate - Hibernate 中的多对一关系

我想在数据库的两个字段之间建立多对一的关系。我正在使用 PostgreSQL 数据库和 Hibernate。这些表是 ApplicationField 和 Device。第一个有 2 列:AppFieldId 和 Name。第二个有 NodeId、Description 和 AppFieldId。ApplicationField 的休眠映射是:

对于设备:

在 Java 类上,我在 ApplicationField 类上有一个 List devices,在 Device 类上有一个 ApplicationField appField。但是,当我尝试创建 sessionFactory 时,我得到一个异常,例如:

我应该如何处理表之间的关系?

非常感谢!!