问题标签 [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.
java - Hibernate Mapping - 没有@Id的连接表
我有三个表Member
,Address
和Mem_Addr
。
实体由表映射Member
/连接。多对多。Address
Mem_Addr
我有以下实体Member
和Address
:
Mem_Addr
表(它没有关联的实体)。
Address
实体。
Address
我在表/实体中没有 ID 。(请不要问我关于设计的问题。它现在无法更改。)
因此,当我加载成员时,我想加载该成员的所有地址位置。
解决办法是什么?
编辑:更多信息...
基本上有些Member
s 将在Mem_Addr
表中添加一个新条目。对于表中的每个条目,Mem_addr
表中都会有一个条目Address
。
要获取成员的地址,我需要参考 Mem_Addr。Mem_Addraddr_id
作为主键,Addressaddr_id
作为外键。
java - Hibernate如何正确删除@OneToMany中的孩子?
我有一个非常简单的单向@OneToMany,从父对象到 CascadeType.ALL 的子对象列表。我将如何正确删除和删除其中一个孩子?
简单地调用 List 上的 remove(child) 然后 session.saveOrUpdate(parent) 当然不起作用,并且除非我指定孤儿删除,否则不会在数据库中删除子项。
作为孤立删除的替代方法,如果我 session.delete(child) 在数据库中删除它,然后从列表中删除(child) 然后我必须 session.refresh(parent) 所以我的父对象是否正确在内存中有正确的状态吗?
我将如何正确删除孩子并将其从数据库中删除而不进行孤立删除?
我目前正在我的 ParentDao 中考虑这个问题:
java - Hibernate:带有继承的 NaturalId
我有以下实体(短版):
学生组:
百人队:
队列:
所以我有一个 GroupOfStudents 的 CourseLecture。有不同的 GroupOfStudents,例如 Centuria 或 Cohort。但我希望 Cohort 的 number 字段是 NaturalId。这将导致错误:
但是为什么我只能在根实体上使用 @NaturalId 呢?如何在不破坏类继承的情况下解决这个问题?
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.
spring - 如何在使用spring mvc和Hibernate时将重复项添加到映射(OneToMany)到另一个实体类的实体
我有一个实体“用户”,它是 OneToMany 映射到另一个实体“项目”。项目列表成功添加,直到项目不重复。如何向用户添加重复项。
在用户实体中
在项目实体中
我在服务类中将项目添加到用户的功能
如何向用户添加重复项目。我是春天和冬眠的新手
hibernate - 在 Hibernate 中使用 mappedBy 时持久化子实体
我的数据库架构有两个表:-Rule Table
和Rule Scope
表。
规则表列(rule_id
主键,.....)和规则范围列(rule_id
外键,Scope_id
(不是自动生成的 Id,可以为不同的 rule_id 重复)
规则范围主键是rule_id
和的组合Scope_id
。
我的RULE
实体
Rule Scope
实体:-
我有以下问题:-
当我尝试保存 Rule 时,但它没有保留子实体。当坚持违反外键约束的规则范围时,它为规则 ID 提供 0。但是当我使用@JoinColumn 时,它正在工作。请帮助我在坚持和使用的Rule Scope
同时坚持下去。Rule
mappedBy
java - 询问休眠:错误:mappedBy 引用未知的目标实体属性
这是我的 sql
这是我的 2 实体
在主函数中,当我写
日食 说
为什么我会收到此错误?
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..
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),但如果我能找到一种方法来解决这个问题而不改变模型,那就更好了。
我不知道泛型是否与它有关。此外,我的实体经过审计和索引。
任何帮助将不胜感激!
hibernate - Hibernate Mapping:在hibernate中删除一对多双向映射中的孩子
我有一个父对象及其详细对象。下面的代码中提到了映射 -
父对象映射
子对象映射
我能够拯救一个有 3 个孩子的新父母。现在,在更新操作中,
在 parent.childSet 中,我将删除所有值并设置新值。当我做 session.update(parent) 时,我的要求是,
- 删除父级的所有现有子级 - 因为 parent.childSet 没有它们。
- 插入 parent.childSet 中可用的新值。
这里,parent.childSet 表示父类/HBM 映射中的集合。
现在发生的问题是,
- 它抛出异常 - “无法将 NULL 插入(“CHILD”。“PARENT_ID”)”
如果不清楚,我会继续更新问题。
谢谢你的时间!