问题标签 [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 回答
1004 浏览

jpa - JPA2——EntityManager.detach 在哪里?

我在几个地方读到 JPA2 将支持实体管理器上的分离方法调用。我正在运行 Hibernate 3.5.1-FINAL 和 Spring 3.0.2-RELEASE 作为 Maven 依赖项——从 JBoss 存储库中获取。

这还不够吗?

也许问题出在我的 javax.persistence.EntityManager 接口定义上。我需要更新 javax 吗?如何做到这一点?

0 投票
2 回答
13096 浏览

xml - 通过 XML 而不是注解注入 Entitymanager

我想要做的是通过 XML 注入几乎与通过 A @PersistenceContext 注释相同的方式。我之所以需要这个,是因为我需要将不同的实体管理器注入到同一个 DAO 中。数据库相互镜像,我宁愿有 1 个基类,对于该基类的实例,然后创建多个类,这样我就可以使用 @PersistenceContext 注释。

这是我的例子。这就是我现在正在做的事情,并且有效。

TransactionManagers、EntityManagers 定义如下...

我想要做的是不创建类 ItemDaoImplStore2 或 ItemDaoImplStore1。我想通过 xml 将这些作为 ItemDaoImpl 的实例。我不知道如何正确注入实体管理器。我想模拟将此注释为“存储库”注释,并且我还希望能够通过持久性单元名称指定要注入的 entityManager。我想要类似于下面使用 XML 的东西。

0 投票
1 回答
1850 浏览

jpa - EntityManager 不会在 flush() 上更新

Java EJB 的 EntityManager 不会更新来自消费者的数据。

消费者登录商店,购买了一些东西并想查看他的购物历史。除了他最后一次购买外,一切都显示出来了。如果他注销并登录,它会显示。

我使用 JPA 将购买/购买(映射到消费者)持久化到数据库。似乎无法检测到来自此会话的购买。

代码:

帮助!?同花顺是不行的……

0 投票
1 回答
1030 浏览

java - Hibernate EntityManagerFactory EntityManager

我可以EntityManagerEntityManagerFactorybean 外部创建一个吗?如果是这样,我会怎么做?

0 投票
1 回答
2378 浏览

hibernate - 在 Spring 上下文中创建 JPA EntityMananger 的问题

我有一个使用 Hibernate 作为 JPA 提供程序的 JPA/Spring 应用程序。在代码的一部分中,我必须使用 new 运算符在我的应用程序中手动创建一个 DAO,而不是使用 Spring DI。当我这样做时,Spring 不会处理 @PersistenceContext 注释。

在我创建 DAO 的代码中,我有一个 EntityManagerFactory,我用它来设置 entityManager,如下所示:

问题是当我这样做时,我得到一个休眠错误:

这是 spring 实体管理器工厂配置:

0 投票
1 回答
3710 浏览

hibernate - Hibernate/Spring 框架中的 TestConnectionOnCheckin c3p0 配置属性

我想为 c3p0 设置 testConnectionOnCheckin 属性。

但是我在这样做时遇到了麻烦,因为 c3p0 数据源是在休眠实体管理器 bean 中代表我创建的。

其中每个<prop key...1> 是一个休眠配置键,休眠用它代表我创建一个 c3p0 数据源。

但是,我找不到将设置 c3p0 数据源的 testConnectionsOnCheckin 属性的休眠配置键。

有这样的钥匙吗?如果没有,那么我应该直接设置 entityManagers 数据源吗?在这样做之前我应该​​知道什么技巧吗?

注意: testConnectionsOnCheckout 不是一个可行的选项,它有一个对应的休眠配置键。

0 投票
1 回答
1251 浏览

java - 使用ejb、java持久化entitymanager的两个db连接

我正在尝试通过一个 slsb 访问两个数据库,特别是 slsb 中的一种方法。然而这不可能吗?除了更改存储的过程之外,我还能做些什么吗?

原因:org.hibernate.exception.GenericJDBCException:无法打开连接

0 投票
2 回答
2547 浏览

jpa - 如何使用 Java SE 中的持久性 API 防止不可重复的查询结果?

我正在使用 Java SE 并了解如何使用持久性 API(toplink-essentials)来管理 Derby DB 中的实体。注意:这是(远程学习)大学作业,但不是“家庭作业”,这个问题出现在课程材料中。

我有两个线程在同一组实体上运行。我的问题是,我尝试过的每一种方式,都可以修改一个线程中查询结果集中的实体(在事务中执行的查询),以便结果集对事务的其余部分不再有效。

例如,从一个线程执行此操作:

如果使用此方法从另一个线程中断它:

可能发生的情况是,当线程updatePrices()恢复时,它的查询结果集无效,并且已售商品的价格最终会更新为与出售时不同的价格。(商店希望保留在 DB 中出售的商品的记录)。由于发生并发事务,我EntityManager为每个线程(来自同一工厂)使用不同的事务。

是否有可能(通过锁定或某种上下文传播)防止查询结果在(中断的)事务期间变为“无效”?我有一个想法,这种场景是 Java EE 的用途,但我想知道它在 Java SE 中是否可行。


编辑:

接受 Vineet 和 Pascal 的建议:@Version在实体的 Class 中使用注解(带有一个额外的 DB 列)会导致大型事务 ( updatePrices()) 以OptimisticLockException. 但是,如果它发生在大量查询结果的末尾,这是非常昂贵的。有什么方法可以使我的查询(内部updatePrices())锁定相关行,从而导致内部线程sellInstrument()阻塞或中止引发异常(然后中止)?这会便宜得多。(据我了解,我在 Toplink Essentials 中没有悲观锁定)。

0 投票
7 回答
7215 浏览

java - 如何在 Spring Roo 中使用 JUnit 测试?(EntityManager 的问题)

我正在尝试为 Spring Roo 项目编写 JUnit 测试。如果我的测试需要使用实体类,我会得到以下异常:

Spring Aspects JAR 看起来配置正确。特别是,我在pom.xml文件中有以下内容:

当不从 JUnit 测试中调用时,使用实体类的类工作正常。知道如何设置以便从 JUnit 测试中注入实体管理器吗?

这是我的测试课(或多或少):

这足以引发异常。FooServiceImpl 类返回一组 Foo,其中 Foo 是一个实体类。getFoos()当应用程序以通常的方式运行时,该方法有效。问题仅出现在单元测试的上下文中。

0 投票
2 回答
10484 浏览

mysql - What is the proper way to ensure EntityManager connections are closed?

There are 19 methods in our DAO layer, each is some variation of this:

Meaning: In each method we handle our own transaction and close it in a finally block. We're testing a Jersey app, so our JUnit tests extend JerseyTest. Each test method instantiates a Grizzly container, runs the test, then shuts down the container. EntityManagerFactory is injected by spring. We're using JPA over Hibernate.

I'm monitoring the connections to our MySQL test DB and they're always high. One test alone runs the MySQL "Max_used_connections" variable to 38. For fun, I went and commented out all the em.close() calls, and the test still uses 38 connections.

I'm using Hibernate's built-in connection pooling (not for prod use, I know). I still expected some sort of intelligent pooling.

Am I handling the EntityManager wrong? How else can I close connections?