问题标签 [jpa-2.0]
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 集合中的唯一项
我在 Hibernate 中定义了一个集合,如下所示:
它使用列 item_id 和 object_id 创建一个映射表。
问题是 object_id 似乎是唯一的。换句话说,我不能让两个不同的项目与同一个对象相关。但这就是我想要的。
我希望 item_id 和 object_id 的组合是唯一的。我怎么做?
java - Hibernate 使用 orphanRemoval 触发约束冲突
我在使用 JPA/Hibernate (3.5.3) 设置时遇到问题,其中我有一个实体,一个“Account”类,它有一个子实体列表,“Contact”实例。我试图能够将联系人的实例添加/删除到 Account 的 List<Contact> 属性中。
将一个新实例添加到集合中并调用 saveOrUpdate(account) 可以保持一切可爱。如果我然后选择从列表中删除联系人并再次调用 saveOrUpdate,SQL Hibernate 似乎会产生将 account_id 列设置为 null,这违反了数据库约束。
我究竟做错了什么?
下面的代码显然是一个简化的摘要,但我认为它涵盖了问题,因为我在不同的代码中看到了相同的结果,实际上就是这么简单。
SQL:
爪哇:
结果:
编辑#1:
可能这实际上是一个错误 http://opensource.atlassian.com/projects/hibernate/browse/HHH-5091
编辑#2:
我有一个似乎可行的解决方案,但涉及使用 Hibernate API
由于不推荐使用 Hibernate CascadeType.DELETE_ORPHAN,我不得不假设它已被 JPA2 版本取代,但实现缺少一些东西。
hibernate - 我可以通过名称“id”引用 JPQL 中任何实体的主键,而不管实体的 ID 属性名称如何?
Hibernate 允许您只说“.id”。假设我有:
我想通过 ID 获取客户的姓名:
请注意,我将“id”而不是“customerId”作为快捷方式。这是有效的 JPQL,还是仅在 Hibernate 中有效?
jakarta-ee - 从多对多关系返回列表?
我有两个表:用户和角色。一个用户可能有更多的角色,所以这是一个多对多关系。我用 Netbeans 生成了实体类,它们看起来像这样:
(ETC)
这是我的问题:我想在一个表中列出所有用户,并为每个用户列出他们拥有的所有角色。我想不出解决办法。如何引用 JPQL 中的集合?如何退回收藏?这可能吗?
更糟糕的是,我有自己的类,我想用它来在我的 JSF 页面上显示结果。这是当前的查询:
它适用于简单的属性和 OneToOne 关系。但不适用于多对多。我尝试像这样加入:
... but the runtime complained about bad syntax near "r", and also about r.roleName. And it wanted to return a single role, but I need all the roles for a user!
I'm not an expert at SQL either, so it is quite possible that the solution is simple... still after having read the "Pro JPA 2..." book I'm stuck. Thanks for any help.
hibernate - Hibernate 3.5 / JPA 2.0 的区别
到目前为止,我一直更喜欢直接使用 Hibernate 而不是 JPA 1.0,因为 JPA 缺少一些我需要而 Hibernate 提供的重要特性:Criteria API、二级缓存、单向 OneToMany 和其他一些。
现在,随着 JPA 2.0 的出现以及随之而来的所有新功能以及 JPA 1.0 中最初缺少的所有新功能(http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F),我想知道是否还是需要直接使用Hibernate。
你怎么看?Hibernate 3.5 中还有什么我不能用 JPA 2.0 做的?
hibernate - 将 JPA 实体命名为“组”是否非法?
我正在开发一个 JEE6 应用程序,使用 JPA 2.0 和 Hibernate 3.5.2-Final 作为提供者(和 MySQL 5.1.41)。我的应用服务器是 Glassfish V3.0.1。我已经有一个包含一些实体和关系的工作 CRUD 应用程序。
现在我添加了一个名为“Group”的(非常简单的)实体。实体类如下所示:
当然我也把它加到了persistence.xml中,比如<class>model.Group</class>
. 我的 persistence.xml 在部署时删除并重新创建所有表。
因此,当我部署我的应用程序时,会生成我所有实体的表,但表组除外。在休眠日志中,我发现了以下错误(这不会阻止应用程序的部署)
现在,当我将实体重命名为“MyGroup”之类的名称(属性保持不变)时,相应地更改 persistence.xml,并重新部署我的应用程序,成功创建了“MyGroup”表!我在日志中发现以下几行表明 MyGroup 已正确创建:
有人知道问题是什么吗?好的,我可以将 Group 重命名为 MyGroup,但我真的很想知道这里发生了什么。我现在应该有什么限制,比如“不要调用实体组”吗?但如果是这样,为什么我的错误如此不清楚?
java - 带有 @EmbeddedId 的 JPA 复合键
在旧数据库中,我有三个表:Users、Workgroups 和 UsersWorkgroup。UsersWorkgroup 存储用户在工作组中的角色。以下是相关的代码片段:
当然,问题是,它不起作用。目前我得到这个例外:
异常描述:在 [class entity.Workgroup] 和 [class entity.UsersWorkgroup] 之间遇到了不兼容的映射。这通常发生在映射的基数与其反向指针的基数不对应时。
我不明白,因为 OneToMany 应该匹配 ManyToOne ......还是它是 ManyToMany 关系?如果我切换到@ManyToMany,我会得到:
异常描述:无法确定类 [class com.ericsson.rsg.ejb.entity.UsersWorkgroup] 上的关系属性 [workgroup] 的目标实体。不使用泛型时,请确保在关系映射上定义目标实体。
我试图理解复合键(嵌入式),但我能找到的所有示例都只有简单的列,而不是外键(但这就是复合键的全部意义,不是吗?)。UsersWorkgroup 表可以偷偷成为一个连接表吗?
我应该将 PK 类声明为严格的 POJO 类吗?还是应该将@JoinColumn 注释放在PK 类中?如何从另一个表中引用复合键中的列?我应该在引用类构造函数中初始化 PK 对象,还是没有必要?
我觉得完全卡住了。
hibernate - EntityManager.find 找不到实体,但使用 Criteria API 可以
我在 Java EE 6 中遇到了一个相当奇怪的情况,其中使用 JPA EntityManager 的find
方法以及实体的主 ID 返回 null,但使用 Criteria API 选择具有该 ID 的所有实体工作正常。
这是我使用的代码find
:
...这是我与 Criteria API 一起使用的代码:
知道为什么find
返回 null 但 Criteria 找到了用户吗?我在程序的完全相同的位置尝试了这两种替代方法。
以下是用户实体的相关部分:
java - Hibernate 3.5.1、JPA2.0 和 MySQL - 2 个 diff dbs / 同一服务器内的替代行为
我正在为 ORM 运行 MySQL 5.1 服务器和 Hibernate 3.5.1 / JPA2。在我手动删除一些表之前,一切似乎都很好。从那时起,单元测试失败,Hibernate 不再创建某些表。从更改 jdbc url
至
解决了这个问题......直到我执行一些表删除:-( 因为我将使用 MySQL 进行生产,所以这根本不能发生。
删除 dbjava 也无济于事。有什么建议么?
- - 附加信息:
真是越来越奇怪了。从 mysql 控制台:
呃?为什么表'ca'存在?!?!?实际上,它曾经存在过……从那以后,它被丢弃了,整个db被丢弃了几次……为什么它仍然存在?
更糟:
完全糊涂了……
但是,我刚刚意识到一些事情:我在休眠中的表名使用大小写(驼峰式)表示法。mysql 仅响应小写。有人会确认 mysql 在 2010 年不识别大小写吗?!?
java - 用于 JPA 的 Hibernate 或 EclipseLink?
我想知道是否有人对这些框架的 JPA2.0 实现有经验?特别是与带有 EclipseLink 支持的 Spring3.x 一起使用。
您是否将这些框架和 JPA2.0 用于生产?有什么严重的问题吗?