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

java - Hibernate Mapping - 没有@Id的连接表

我有三个表MemberAddressMem_Addr。 实体由表映射Member/连接。多对多。AddressMem_Addr

我有以下实体MemberAddress

Mem_Addr表(它没有关联的实体)。

Address实体。

Address我在表/实体中没有 ID 。(请不要问我关于设计的问题。它现在无法更改。)

因此,当我加载成员时,我想加载该成员的所有地址位置。

解决办法是什么?

编辑:更多信息...

基本上有些Members 将在Mem_Addr表中添加一个新条目。对于表中的每个条目,Mem_addr表中都会有一个条目Address

要获取成员的地址,我需要参考 Mem_Addr。Mem_Addraddr_id作为主键,Addressaddr_id作为外键。

0 投票
2 回答
8177 浏览

java - Hibernate如何正确删除@OneToMany中的孩子?

我有一个非常简单的单向@OneToMany,从父对象到 CascadeType.ALL 的子对象列表。我将如何正确删除和删除其中一个孩子?

简单地调用 List 上的 remove(child) 然后 session.saveOrUpdate(parent) 当然不起作用,并且除非我指定孤儿删除,否则不会在数据库中删除子项。

作为孤立删除的替代方法,如果我 session.delete(child) 在数据库中删除它,然后从列表中删除(child) 然后我必须 session.refresh(parent) 所以我的父对象是否正确在内存中有正确的状态吗?

我将如何正确删除孩子并将其从数据库中删除而不进行孤立删除?

我目前正在我的 ParentDao 中考虑这个问题:

0 投票
1 回答
428 浏览

java - Hibernate:带有继承的 NaturalId

我有以下实体(短版):

学生组:

百人队:

队列:

所以我有一个 GroupOfStudents 的 CourseLecture。有不同的 GroupOfStudents,例如 Centuria 或 Cohort。但我希望 Cohort 的 number 字段是 NaturalId。这将导致错误:

但是为什么我只能在根实体上使用 @NaturalId 呢?如何在不破坏类继承的情况下解决这个问题?

0 投票
2 回答
9030 浏览

java - Hibernate "Provided id of the wrong type expected Long, got class DelayedPostInsertIdentifier" exception

In short:

When I try to add New(Unsaved) Entities to one-to-many set of the saved parent, after calling Merge on the Parent entity, I get the following exception:

Provided id of the wrong type for class com.test.Child. Expected: class java.lang.Long, got class org.hibernate.action.internal.DelayedPostInsertIdentifier

I've found a ticket representing the same issue: https://hibernate.atlassian.net/browse/HHH-2382 It was rejected and doesn't help much with my question.

Did anybody face this problem? Can anybody point the source of the problem and the possible solution?

Problem in details:

I have two classes: public class Parent extends BaseModel implements Serializable { private long id; private Set children; }

I am trying to perform the following code:

And after calling save method second time, I get the following Exception:

org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.text.Child. Expected: class java.lang.Long, got class org.hibernate.action.internal.DelayedPostInsertIdentifier at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:134) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1092) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1019) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:648) at org.hibernate.type.EntityType.resolve(EntityType.java:468) at org.hibernate.type.EntityType.replace(EntityType.java:325) at org.hibernate.type.CollectionType.replaceElements(CollectionType.java:517) at org.hibernate.type.CollectionType.replace(CollectionType.java:667) at org.hibernate.type.TypeHelper.replace(TypeHelper.java:177) at org.hibernate.event.internal.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:372) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:184) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:157) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:914) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:898) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:902) at com.test.DAOFacade.saveObject(DAOFacade.java:273) at com.test.Test.testSaving(MemcachedTest.java:99)

DaoFacade.save method looks the following way:

Hibernate mappings are:

I've been debugging for hours and all processes seem to go correclty in Hibernate, but in fact it leads to the following problem:

  • During merge, during iterating fields, unsaved "Second" Child is found.
  • "Second" Child is marked for insert, Insert query is prepared and is being put into the QueryQueue.
  • Continuing the merge process, Hibernate at some moment is trying to load the "Second" Child
  • But it was not yet inserted and the Excpetion is raised.
0 投票
1 回答
59 浏览

spring - 如何在使用spring mvc和Hibernate时将重复项添加到映射(OneToMany)到另一个实体类的实体

我有一个实体“用户”,它是 OneToMany 映射到另一个实体“项目”。项目列表成功添加,直到项目不重复。如何向用户添加重复项。

在用户实体中

在项目实体中

我在服务类中将项目添加到用户的功能

如何向用户添加重复项目。我是春天和冬眠的新手

0 投票
1 回答
545 浏览

hibernate - 在 Hibernate 中使用 mappedBy 时持久化子实体

我的数据库架构有两个表:-Rule TableRule Scope表。
规则表列(rule_id主键,.....)和规则范围列(rule_id外键,Scope_id不是自动生成的 Id,可以为不同的 rule_id 重复
规则范围主键是rule_id和的组合Scope_id

我的RULE实体

Rule Scope实体:-

我有以下问题:-
当我尝试保存 Rule 时,但它没有保留子实体。当坚持违反外键约束的规则范围时,它为规则 ID 提供 0。但是当我使用@JoinColumn 时,它正在工作。请帮助我在坚持和使用的Rule Scope同时坚持下去。RulemappedBy

0 投票
1 回答
320 浏览

java - 询问休眠:错误:mappedBy 引用未知的目标实体属性

这是我的 sql

这是我的 2 实体

在主函数中,当我写

日食 说

为什么我会收到此错误?

0 投票
1 回答
1083 浏览

hibernate - Hibernate Annotation Mapping Exception in Spring MVC "org.hibernate.PropertyAccessException"

I am new for both Spring MVC and Hibernate. I tried to implement Hibernate annotation based mapping in Spring MVC to add a column into tables Users and Address using @OneToMany bidirectional annotation. But I got the following exception of 'org.hibernate.PropertyAccessException'

Here the sample code

pom.xml

mvc-dispatcher-servlet.xml

Users.java

Address.java

SimpleUserManager.java

SimpleAddressManager.java

HibernateUsersDAO.java

HibernateAddressDAO.java

UserController.java

Registration.jsp

I have searched lots of answer for this exception but I cant get a correct solution. Kindly help me. Thanks in advance..

0 投票
0 回答
2504 浏览

java - @OneToMany 和 @JoinFormula 使用多态性和泛型

我有以下用例:

  • 父项包含子项和 ParentTags。
  • 子项包含 ChildrenTags 及其父节点。
  • ParentTags 和 ChildrenTags 都是 T 为 Parent 或 Child 的标签。

现在我想在 Parent 中创建一个派生字段,将所有标签映射到这个父级或它的一个子级。SQL 查询很简单,但我无法通过注释给定属性来使其工作。请注意,@ManyToOne 映射的作用就像一个魅力,以便找到标签的父所有者,请参阅下面的代码(这是 @OneToMany 关系,标签可能不是我能找到的最佳名称)。

父类

子类

标记类

ChildTag.class

ParentTag.class

我想找到一种通过给定查询或公式加载 allTags 的方法。逆映射@ManyToOne 有效(只要所有者未经过审计,就很难找到该错误)。

我已经尝试了以下解决方案但没有成功:

@JoinFormula

我收到 ClassCastException,无法将公式转换为列

@加载器

也不例外,实际上在调试时我可以看到加载器找到了所有合适的标签,但没有用它们初始化集合。我还尝试将查询放在 hbm 配置文件中,因为我知道 @Loader 和 @NamedNativeQuery 相处得不好,但没有成功(也许我在这里做错了什么)。但是我宁愿实现一个没有配置文件的解决方案。

我可以添加另一列(owner_id),但如果我能找到一种方法来解决这个问题而不改变模型,那就更好了。

我不知道泛型是否与它有关。此外,我的实体经过审计和索引。

任何帮助将不胜感激!

0 投票
1 回答
1215 浏览

hibernate - Hibernate Mapping:在hibernate中删除一对多双向映射中的孩子

我有一个父对象及其详细对象。下面的代码中提到了映射 -

父对象映射

子对象映射

我能够拯救一个有 3 个孩子的新父母。现在,在更新操作中,

在 parent.childSet 中,我将删除所有值并设置新值。当我做 session.update(parent) 时,我的要求是,

  1. 删除父级的所有现有子级 - 因为 parent.childSet 没有它们。
  2. 插入 parent.childSet 中可用的新值。

这里,parent.childSet 表示父类/HBM 映射中的集合。

现在发生的问题是,

  1. 它抛出异常 - “无法将 NULL 插入(“CHILD”。“PARENT_ID”)”

如果不清楚,我会继续更新问题。

谢谢你的时间!