问题标签 [entitymanager]

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 投票
2 回答
4755 浏览

jpa - EclipseLink,EntityManager 需要两个持久性单元

我有一个 jar 库 A(或 Eclipse 中的项目),它有自己的持久性单元(META-INF/persistence.xml)和一些实体类,另一个项目(B)使用这个。在项目 B 中还有持久性单元和实体类。

在项目 BI 中需要使用项目 A 和 B 中的实体类。但是如果我将“A”设置为持久性单元名称,如果此查询在项目 B 的实体中,EntityManager 将无法创建命名查询。如果我将“B”设置为持久性单位名称,它不能从项目 A 的实体创建命名查询。错误消息是:

持久性单元能否以某种方式包含其他持久性单元?或者有没有其他方法可以解决这个问题?

0 投票
2 回答
81064 浏览

java - 如何使用 EntityManager (JPA) 在 DAO 中实现 update() 方法?

实现简单更新的标准方法是什么?

示例:我们有电话号码为 NNNNNN 的用户,现在我们要将其设置为 YYYYYY。

用户实体尽可能简单:

0 投票
2 回答
18876 浏览

spring - 在 Spring 中,如何使用 ClassPathXmlApplicationContext 来获取 EntityManager?

使用 Spring,我可以自动装配具有以下属性的 bean:

使用以下内容,我可以手动自动装配 bean“someBean”:

但是,我无法弄清楚如何直接获取特定的 EntityManager。用例是我想编写一个测试,它将获取所有 EntityManager 对象并在其中执行简单的查询以确保它们设置正确。为此,我需要能够从应用程序上下文中获取所有 EntityManager 对象。我怎样才能做到这一点?

以下不起作用。它返回一个空地图。

0 投票
2 回答
5109 浏览

java - 使用 JPA 报告重复条目保留一个新但相同的实体

我有一个连接到 MySQL 数据库的 JPA 项目,其中我的实体对象映射到具有 2 列约束的表。那是:

在数据库中,my_entity 表对 (myField1, myField2) 具有唯一约束。问题是,如果我使用 EntityManager.remove(entity) 删除现有实体,然后使用 EntityManager.persist(entity) 添加新实体,则数据库会引发有关重复行的错误。

例如:

这给了我一个 MySQLIntegrityConstraintViolationException 抱怨这是一个重复的条目。我想这是因为它试图在删除旧条目之前添加新条目。有什么办法可以维持这种秩序吗?或者,有没有办法使用 JPA 来防止这种情况?这不是一个常见的用例,但我担心一个用户试图删除一个实体以摆脱所有相关数据并重新开始,然后重新创建更简单的字段,然后发现数据从未被删除。

hashCode 和 equals 的实现如下:

0 投票
1 回答
3378 浏览

hibernate - 当我添加 OneToMany 注释时,EntityManager 无法使用 JPA/Hibernate 实例化

OneToMany当我将列添加到已经有列的类时,我一直在努力无法实例化 EntityManager OneToMany

现在EducationInfo有一个OneToOne用户,因为每一行对一个人来说都是唯一的,但我希望能够加载给定用户名的所有教育信息。

添加列时,我没有更改 orm.xml 文件,我只是删除了数据库,以便可以重新创建它。

如果我不包括最后一列,那么我的单元测试工作正常,但如果我包括这个,那么我所有的单元测试都会失败。

这是它尝试使用的类,该类的单元测试工作正常:

我也很好奇是否有某种方法可以知道阻止 EntityManager 实例化的错误是什么,但主要问题是当我将此列添加到 User 时可能导致问题的原因是什么?

更新:

删除了错误的部分。

更新 2:

我将教育实体中的用户列更改为,@ManyToOne并且我的所有单元测试都失败了。

我的错误日志的结尾是这样的:

然后 EntityManager 在每个测试中都是空的,所以它失败了。

更新 3:

Address实体没有任何外键,因为它是从多个实体调用的。

使用 Apache Derby 作为数据库是否会导致此问题?

不幸的是,我没有收到任何错误消息。我从 Maven 中运行它,虽然每次我都删除数据库,但我不知道发生了什么是错误的。EducationInfo -> User 中的 @ManyToOne 不会引起任何问题,但 User 中的 @OneToMany -> EducationInfo 会引起任何问题。

更新 4:

我按照建议向 User 实体添加了 mappedBy。我在另一个列定义中有这个,因为我有五个不起作用的定义,而且我相信它们都是出于相同的原因,所以我只是用一个进行测试。不幸的是,它仍然导致 EntiyManagerFactory 没有被构建,所以所有的测试都失败了。

最后更新:

实际情况是

不能同时取多个包

所以我刚刚从 EducationInfo 中完全删除了 FetchType,问题就消失了。

0 投票
2 回答
9399 浏览

java - EntityManager 初始化最佳实践

使用时EntityManager,最好在我的程序中获取一个实例PersistenceContext并将其传递,还是应该多次使用依赖注入?

在我的应用程序中,每个客户端都将与一个有状态会话 bean 进行通信,并且每个 bean 都需要EntityManager在某个时候使用。我猜想同时调用 bean 方法(但我什至不确定)。如何保证EntityManager以线程安全的方式使用?有交易吗?每个 bean 中都有一个单独的实例?

抱歉,如果这令人困惑,我是 EJB/JPA 的新手,我找不到任何可以解决我的问题的材料。

0 投票
2 回答
8631 浏览

java - EntityManager.merge 插入重复的实体

我有一个非常特殊的设置:我用 Java 创建所有类,在我的应用程序中连接它们(几个多对一关系)。

然后,我想遍历我的对象并将它们保存到数据库中。有时,一个对象已经在数据库中,那么它不应该再次被持久化。

我正确地实现了 hashCode() 和 equals() 方法,但是我的 em.merge() 仍然插入了对象。

再次:

我创建了一些对象,即我创建了一些球员并设置他们所在的球队。团队在 Java 中可能是不同的对象,但根据他们的“equals”方法,它们是相同的。所以如果我保存一个球员,球队应该相应地保存(有效),但如果球队存在于数据库中(根据equals-method),它不应该再次插入,但应该设置关系,课程。

我做错了什么?需要更多信息?

编辑

0 投票
7 回答
119126 浏览

jpa - 创建没有 persistence.xml 配置文件的 JPA EntityManager

有没有办法在EntityManager没有定义持久性单元的情况下初始化?您能否提供创建实体管理器所需的所有属性?我需要EntityManager在运行时从用户指定的值创建。更新persistence.xml和重新编译不是一种选择。

任何关于如何做到这一点的想法都非常受欢迎!

0 投票
1 回答
13967 浏览

java - 春天+休眠+ JPA

到目前为止,我有一个具有持久性的 Spring 应用程序。但是现在我想使用 Hibernate 和 JPA 来完成我所有的数据库活动。我想使用实体管理器来做到这一点。

我一直在阅读有关此问题的许多文档和教程,我一直对是否需要persistence.xml 文件感到困惑。我也对如何设置我的 applicationContext.xml 文件感到困惑。

有没有人知道一个很好的网站来学习 Spring + Hibernate + JPA + 使用 EntityManager?

0 投票
5 回答
49649 浏览

hibernate - EntityManager 刷新问题

当我调用刷新函数时,我从我的 EntityManager 收到此错误。

我听说这可能是 Spring/Hibernate 的一个错误,但是我不确定如何解决这个问题。

编辑:错误是