问题标签 [hibernate-onetomany]

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 回答
76 浏览

spring - Hibernate @OneToMany 的意外行为

我是使用 spring-boot 的 JPA 的新用户,所以这个问题可能看起来很幼稚。我有两个非常简单的实体:

我正在寻找的行为是我想使用 FetchAll() 原语获取包含至少一个服务包的所有 RatePlan 作为 SQL 中的简单 JOIN。

当我打印 Hibernate 生成的 SQL 时,首先它会获取所有 RatePlan,然后为每个 rateplan 查找关联的 ServicePackage。结果是我提供了没有任何相关服务包的费率计划,这是我不想要的。(好像我使用了选择外连接)。

我看到在服务包类中插入 ratePlan (ManyToOne) 的引用可以解决问题。但我认为在这里复制对象没有任何意义。你有其他解决方案吗?

谢谢。

0 投票
2 回答
1159 浏览

hibernate - 每个子类方法的休眠表 - mappedBy 引用未知的目标实体属性

我有一个表层次结构

Job{jobId, title} 与一对多关系

Task{taskId, jobId(FK), task_title} 与一对多关系

子任务{subTaskId, TaskId(FK), subtask_title}。

现在我有一个表的子集,这些表扩展了这些主表,例如

TechinalJob{jobId(FK), Technical_Details},

TechinalTask​​{taskId(FK), Technical_Task_Details},

TechinalSubTask{subTaskId(FK), Technical_SubTask_Details}。

同样,我将有管理作业/任务/子任务。

但问题是我在技术工作/任务/子任务或管理工作之间没有关系。这种关系是通过原始工作/任务/子任务来实现的。我在 Techincal Jobs/Tasks/SubTasks 或管理中也没有主键。因此,如果我必须在 TechinalJob 和 TechincalTask​​ 之间创建双向一对多关系,我必须通过 Job/Task/SubTask 表结构执行以下操作。如何使用 Hibernate 继承来实现这一点。

2015 年 3 月 25 日更新:

在尝试了Zielu建议的ver2之后。这是修改后的代码




当我尝试这个时,我得到一个异常说 Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: TechinalTask​​.job in TechincalJob.tasks。尽管我正在扩展 Task 并确保 Task 中的工作是公开的,但它无法在 TechnicalTask​​ 中找到工作。

提前致谢..

0 投票
1 回答
534 浏览

hibernate - 在 Hibernate 中将一对多映射到子类

我有以下课程:

数据库脚本:

xml映射文件:

我正在尝试创建一个步骤,在每个列表中添加一个变量,并将整个结构添加到数据库中,如下所示:

但是休眠正在生成以下 SQL 以插入到 VARIABLE 表中:

如果我只使用变量类创建一个列表,我可以插入并休眠生成所有 SQL 以正确插入到所有 5 个表中。

是否可以将列表(一对多)映射到 Hibernate 中的子类?我缺少一些额外的配置吗?

0 投票
1 回答
3878 浏览

java - 使用复合键休眠单向 OneToMany

我想构建 Hibernate OneToMany 关系,其中 Parent 有一个复合主键,而 Child 有一个主键(休眠自动生成)。以下是我的工作示例代码:

但是现在我想将上面的模型建模为 OneToMany 单向关系,即子级不应该引用父级(希望在子类中省略 Parent 实例)。可能吗?

0 投票
1 回答
35 浏览

grails - Grails 域类关系多对一

我设计域类如下:

发票行有 2 种类型:invoiceOneLinesinvoiceTwoLines。然后我创建new invoice line:我做了如下:

我创建了2 invoice lines as invoiceOneLines3 invoice lines as invoiceTwoLines. 但是,当我在视图中显示它时:

它显示invoiceOneLines已更正,但在 中invoiceTwoLines,它显示了所有(两者invoiceOneLines and invoiceTwoLines)。

我不确定我是否设计了正确的关系。我认为它应该是一个临时表(如多对多关系)。

0 投票
1 回答
33 浏览

hibernate - 如何验证两个实体之间的 OneToMany 关系

我在休眠中有两个具有 OneToMany 关系的实体 Parent 和 Child,Parent 有很多 Child,我想检查 Parent 是否有 Child

我使用了这些条件,但它们不起作用

0 投票
2 回答
1071 浏览

reverse-engineering - HIbernate 逆向工程配置预加载

我找不到任何关于如何配置 Hibernate 逆向工程工具(在 Eclipse 上)以定义域类 fetch = FetchType.EAGER的属性的解决方案。

PS:默认情况下所有定义fetch = FetchType.LAZY的外键

例如,我在 reveng.xml 中定义了它,它适用于主键:

我需要这样的解决方案。

我已经测试了这段代码,它没有工作,它抛出了一个错误。任何人都可以帮忙吗?谢谢。

0 投票
2 回答
566 浏览

java - java.lang.ExceptionInInitializerError 和 org.hibernate.AnnotationException: mappedBy 引用了一个未知的目标实体属性:

我使用 Hibernate 逆向工程来创建我的模型及其映射和关系。但是,当我尝试进行简单选择时,会显示错误。我不知道我的映射有什么问题。这是两个模型的代码。学生模型是父模型,评估模型是子模型。

评估模型:

学生模型:

这是错误:

0 投票
0 回答
441 浏览

java - 休眠:外键必须与主键具有相同的列数

我有以下两个类(这有点简化):

User TABLE 包含用户的 ID 信息并引用包含有关用户的实际详细信息的 DETAILS 表。Details 类有一个复合键,而 User 类只有一个键字段,它的这个键字段用于连接以从 DETAILS 表中获取所有列。

不幸的是,这会导致“外键必须具有与引用的主键相同的列数”错误。显然我在这里遗漏了一些东西。如果我要使用 Details 类的所有键来加入,那么它将导致一对一映射而不是一对多映射。如何设置它以便 User 类可以包含所有具有相应 ID 的 Details 对象?

0 投票
1 回答
121 浏览

hibernate - 更新 oneToMany 关系时的休眠域版本控制

我想知道如果更新 oneToMany 关系是否会更改域版本。例如,有一个与 Addresses 有 OneToMany 关系的 User 实体。那么如果我更新地址列表会对用户版本有影响吗?