问题标签 [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.
hibernate - 使用 OneToMany Fetch 休眠 maxResults 将子项计为结果行
我有一个视频类,它有一个对另一个类评论的 OneToMany 注释。
我在查询中设置了 setMaxResults(4),希望只检索最后 4 个视频。如果任何视频都没有评论,这将非常有用。但是,如果我为每个视频指定超过 1 条评论,我的查询现在返回的视频少于 4 个(我认为它将获取的行数计为 maxResult)。
如何确保在我的查询中返回所有 4 个视频?
我打电话
hibernate - Hibernate MappingException 转换为 ElementCollection
我在重构代码以使用 JPA ElementCollection 而不是已弃用的 CollectionOfElements 时遇到问题。我看到以下堆栈跟踪:
org.hibernate.MappingException:无法确定类型:java.util.Set,表:UserFilter,列:[org.hibernate.mapping.Column(element)] at org.hibernate.mapping.SimpleValue.getType(SimpleValue .java:292) 在 org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:276) 在 org.hibernate.mapping.Property.isValid(Property.java:207) 在 org.hibernate.mapping.PersistentClass.validate( PersistentClass.java:458) 在 org.hibernate.mapping.JoinedSubclass.validate(JoinedSubclass.java:63) 在 org.hibernate.cfg.Configuration.validate(Configuration.java:1149) 在 org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1334) 在 org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
UserFilter 中更改的代码如下:
我正在指定连接表名和列名以实现向后兼容性。
spring - Hibernate:具有两个不同的 ManyToOne 关系的子表
在我正在编写的 Spring/Hibernate/Java/Tomcat 应用程序中,组织与其联系人之间存在 OneToMany 关系。
组织 1:M 联系人(具有外键 org_id)
在组织中,我有这个领域:
在联系我有这个领域:
到目前为止一切正常。现在我添加了一个提议的概念。要约可以由组织提出,并且您与该特定要约的指定联系人交谈。
Offer 具有其组织 (org_id) 和指定联系人 (contact_id) 的外键。
到目前为止,报价看起来像:
我的问题的重点来了。我已经注释了用于组织的联系人类。如果我尝试以通常的 Hibernate 方式持久化 Offer 对象,我需要将 Organization 对象和 Contact 对象的副本存储到 Offer 对象中。这似乎与我现有的组织冲突:两个Java类的联系使用。例如,如果我有一个 1:1 的 Offer,如果我把它放到 Contact 类中,我是可以选择使用其中之一还是强制同时使用两者?
由于Offer是另一个关系,我是否需要编写Contact的数据传输对象版本以用于Offer关系?
谢谢,杰罗姆。
hibernate - 当父级被删除时,而不是子级正在删除其更新
我的问题是,当我删除父级时,子级没有被删除,而是没有删除子级,子级正在更新。父表是Employee
子表EmployeeProject
,员工和项目之间存在一对多的关系一位员工有很多项目什么我已经完成了,请检查我在哪里弄错了这是控制台上显示的查询
这是删除的逻辑
这是父表映射文件Employee.hbm.xml
这是子表映射文件 project.hbm.xml
hibernate - @OneToMany 与非主键 Hibernate 的关系
我有一个名为 Team 的@Entity
我有另一个 bean 名称项目喜欢
它工作正常,但问题是 project_participants 表具有团队表的 project_id 和 id。但我想要 Team 表的 project_id 和 Participants_id。 project_participants 表如下
参与者表为 *
最后我想要的是表project_participants应该有project_project_id和参与者ID(不是 team_id)。Thanx 提前。
hibernate - JPA 原生查询结果返回重复的子对象
我的数据库中有一个父表和一个子表,并且在它们对应的实体类中有一个 OneToMany 映射。子表有一个外键 parent_id。我将 JPA 2 与 Hibernate 和 MySQL DB 一起使用。
我希望使用 SQL 本机查询基于某些父属性检索所有父对象及其相应的子对象。
为此,我有一个 SqlResultSetMapping 如下:
我查询如下:
在遍历结果列表时,我发现子表中不同行的重复子对象,如输出所示:
输出:
我不明白这是为什么。有什么方法(映射)可以通过本机查询获取所有(不同的)子对象。使用列名获取可以工作并且不需要相应的对象映射,但我想获取子表的所有列,因此更喜欢用户 c.* 在 sql 查询中。
java - Hibernate 是否可以通过一次选择获取两个级别的集合?
我有三个实体:
当我使用 JPA 的 Criteria API 来获取 A 时,Hibernate 首先只获取 A,然后是每个 A、所有 B,最后是每个 B 所有 C。
是否可以通过一个理论上可能的选择来强制获取?
java - JPA,不想要 insertable=false,updatable=false,解决方法?
我对stackoverflow和JPA都是新手,所以我会尽力解释这一点。
在一个实体中,我想通过给出 int 值来设置外键,但我也想通过给出一个对象来设置它。这里有一些代码可以更好地解释它。
我尝试了几种方法,但上面的代码是我想要实现的最佳示例。我知道在这两种方法中的任何一种中设置 insert = false 和 update = false 都会使此代码在编译和运行时工作。但我希望能够通过使用 Account 对象和设置实际的 int accountId 来插入 accountId。
这样做的原因是,有时在我的服务器中,我只有 accountId,有时我有 Account 对象。
我也明白最好的解决方案可能是在创建线程和设置 accountId 时使用 account.getId()。但是在我的服务器中能够只使用该对象在逻辑上会很好。
提前致谢!
java - 无法删除一对多关系中的子项
当我放入时inverse=true
,set
没有任何内容被删除。当我不这样做时,我从 中删除MealIngredient
,set
然后 Hibernate 尝试设置null
,它失败并引发异常:
以下是 XML 映射:
是的,和之间的关系Meal
与连接表Ingredient
是多对多的MealIngredient
(是的,我也必须映射MealIngredient
,因为该表中有额外的列)。
编辑:仅插入适用于当前映射,更新仅在MealIngredient
表中生成另一行。
编辑2: hashCode
和equals
实现:
MealIngredient$Id:(使用 Apache commons-lang
EqualsBuilder和HashCodeBuilder)
膳食成分:
我检查了日志,虽然我不知道 Hibernate 在幕后做了什么,但它确实使insert
into MealIngredient
:
当我从中删除MealIngredient
时Meal.ingredientsSet
,Hibernate 会创建update
并尝试设置mealId
为null
:
java - 我是否也应该在 Java 中更新双向关系?
假设我有User
和Group
实体并希望它们之间有一对多的关系。即每个都User
属于一个Group
,而anyGroup
可以包含许多User
s。
集团实体:
和用户实体:
以下是应用程序代码:
不幸的是,getUser()
总是回来null
。为什么?不是设置为相关用户的代表吗?我做错了什么?
我应该自己做集合同步吗?Hibernate 不会自动填充字段吗?
更新 1
我的休眠配置如下:
添加的
没有帮助。
更新 2
添加
没有帮助,getUsers()
仍然返回null。