问题标签 [hibernate-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 投票
1 回答
2896 浏览

java - 即使抛出错误,JPA EntityManager persist() 也会导致对象看起来分离

嗨,我有一个简单的 DAO,具有以下功能。

实体表对 (type,value) 对具有唯一约束,我在下面进行了测试:

我的第一个捕获的错误发生在我的预期中,因为我知道我违反了约束,就我而言,第二个 try/catch 不应该抛出错误,但确实如此,我得到的是:

所以似乎在“e”上调用persist(),即使它没有被持久化已经导致hibernate认为它是一个分离的实体。

这很烦人,因为处理 ConstraintViolation 异常的 JSF 前端正在使用这些函数,但故意保留对象以便用户可以更改其中一个字段并重试,但他们得到了分离实体错误.

这种行为是否是休眠错误,因为我认为它真的不应该这样做?在 DAO 级别有没有办法解决这个问题,这样持久化就不会;如果我的对象实际上没有持久化,就不会将它视为分离的吗?

问候,

格伦 x

0 投票
0 回答
402 浏览

hibernate-entitymanager - Why doesn't createQuery() on the javax.persistence.EntityManager work with upper case attribute?

I've encountered a behaviour of javax.persistence.EntityManager I'd like to understand.

I had code similar to the following:

throwing the following exception: could not resolve property: fOO of: MyDatabaseTableBE in line 4.

The only thing I changed was the capitalisation:

And it worked without an exception.

Why did the first version (with the second and third character in uppercase) not work?

0 投票
1 回答
23218 浏览

java - 无法构建 EntityManagerFactory - Spring 和 Hibernate

将带有 hibernate3 的 spring 应用程序部署到 glassfish 服务器 3.1.2 时出现以下错误:

这是我的 pom.xml:

这是位于 src/java/resources/META-INF 中的 persistence.xml 文件:

这是我位于 src/main/resources 中的 persistence-context.xml 文件:

有人可以帮我弄清楚问题可能是什么以及如何解决它吗?

0 投票
1 回答
979 浏览

database - Hibernate EntityManager persist() 和数据库往返次数

现在我正在使用 entitymanager 使用我的 dao 使用这样的代码将对象实体列表插入数据库。

当我通过将其添加到应用程序上下文中来监视 sql 语句时

控制台中的结果将如下所示

我的问题是。这是否意味着每次我调用此方法时,它都会与数据库进行 100 次往返,还是只进行 1 次往返?

任何答案或见解将不胜感激。

谢谢。

0 投票
2 回答
20442 浏览

spring - Spring 3.1 + Hibernate 4.1 JPA,Entity manager factory注册两次

我使用 Spring Framework 3.1 和 Hibernate 4.1 作为 JPA 提供程序,并且我有一个功能齐全的设置,但是每次启动 Web 应用程序时,我都会看到以下警告消息:

应用程序运行良好,但像这样的警告消息让我很困扰,数小时的搜索、调整和试验让我无处可去。我尝试更改工厂名称并添加和省略配置块,但均无济于事。似乎 Spring 或 Hibernate 中的某些东西只是将实体管理器工厂初始化了两次。

仅供参考,我正在使用 LocalContainerEntityManagerFactoryBean 的 packagesToScan 功能来配置没有 persistence.xml 文件的实体管理器。

我已将我的 spring 上下文 XML 缩减为以下内容,但问题仍然存在:

为了完整起见,这里是 hibernate.properties:

这里是 org.springframework.orm 和 org.hibernate 的调试级日志输出的摘录。您可以在 14:40:06,911 看到 EntityManagerFactory 是如何从第一次注册的,随后 LocalContainerEntityManagerFactoryBean 似乎从头开始重新开始。嗯。

0 投票
2 回答
1050 浏览

spring - Spring + Hibernate + Maven NullPointerException

我认为在我的项目中添加一些测试是个好主意,但在这个过程中,我不知何故设法让真正的交易破裂。

我正在使用带有 JPA(休眠)的 Spring MVC。entityManager 无法再正确加载:

跑步时

一切都贯穿。在那里我使用嵌入式 H2 数据库删除与测试相关的东西(依赖项等)并没有解决问题。

如果我理解正确的话,Javassist 在这种情况下负责注释。我的问题是我不知道在哪里继续寻找。这真的是UTF8问题吗?为什么它试图扫描/classes目录,同时认为它是一个 jar 文件?

其他可能与该问题相关的列表:

  1. 我在 eclipse 中玩了一下项目配置(为 maven、wst 添加)。我确实再次删除了此配置以尝试是否有所作为。我也曾经mvn package war:war在本地 tomcat 上部署应用程序。同样的错误发生在这里。再次mvn test工作正常

  2. 我将 hibernate-validator 和 hibernate-entitymanager 更新到了最新版本。但是,再次降级仍然存在问题。

定位问题可能需要的其他一些信息:

我的 root-context.xml 的相关部分

0 投票
1 回答
11822 浏览

hibernate - hibernate not-null 属性引用 null 或瞬态值:

这个问题随机出现。程序运行了一个多月,今天它崩溃了。在添加新订单时,用户可以从下拉列表中选择一家公司。然后他可以将新订单保存到数据库中。即使现在重新加载应用程序,它也能在大多数情况下工作。错误代码如下:

javax.persistence.PersistenceException:org.hibernate.PropertyValueException:非空属性引用空值或瞬态值:mapped.Order.company (odwzorowania.Zlecenie.firma)

使用休眠、JSF 2.1、MySql 5.5、javax.persistence.*

这是代码(名称是从波兰语翻译过来的)

订单实体

公司实体

堆栈跟踪(mapped.Order.company 与从波兰语翻译而来的 odwzorowania.Zlecenie.firma 相同)

我找到了一些答案,但似乎没有一个适合我的问题。如您所见,我正在更新公司和订单之间双向关联的双方。

编辑:固定翻译

0 投票
2 回答
1497 浏览

hibernate - 提交整个事务后,Hibernate 是否刷新?

我有两个应用程序第一个应用程序将在一个 while 循环中持久保存到数据库中,循环将在很长一段时间后结束(比如 10-15 分钟)。但是第二个应用程序需要第一个应用程序已经在数据库中持久化的数据,第二个应用程序不能等待第一个应用程序完成。它将在第一个应用程序开始运行后立即启动。 我在第一个应用程序中使用了 EntityManager.flush(),希望第一个应用程序能够立即将数据与数据库同步。这样在不同事务中的第二个应用程序就可以开始处理数据了。

这不起作用,flush()方法的目的是什么?我该如何解决我的问题?请帮忙 !!

0 投票
1 回答
1029 浏览

hibernate - 将 Hibernate 4.1 和 JPA 2.0 与实体管理器一起使用,将具有子实体的多个实体加载到多个级别的最佳方法是什么?

我们正在使用带有实体管理器实现的 Hibernate 4.1.4,并且对它非常满意。当加载单个实体或一小组实体(10-50 + 子实体)时,我们获得了出色的性能,并且我们所有的连接都工作得很好并且是双向的。编辑/保存/删除轻而易举!

加载 2500 个实体和相关数据以进行报告

当我们尝试加载数百或数千个实体以及子实体时,我们遇到了问题。在一个示例中,我们有大约 2500 个基本实体以及两个一对一连接和三个一对多连接。这导致 2500 x 5 +1 查询。使用我们的数据库 (DB2) 执行大约需要 30 秒。

我们使用动态查询和实体管理器创建查询方法:

http://docs.jboss.org/hibernate/orm/4.1/javadocs/

http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html

试图哄骗 Hibernate 使用 Joins

我们的观察结果是,无论我们尝试什么,我们似乎都无法让休眠状态来执行大量子实体作为主查询的连接。当使用 find 方法和主键加载单个实体时,hibernate 使用连接,但当加载多个基本实体时,它不会。

我们已经尝试了具有相同结果的标准 api。

在查询中检索多个实体的一些成功

例子:

我们在查询中手动连接并通过元组检索单个实体已经取得了部分成功,但这绕过了我们的注释实体模型并且不是首选方法(如果我们可以避免的话)。

http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#objectstate-querying-executing

我们遇到的元组问题是它们与主实体分离(这似乎合乎逻辑,因为它们不是通过带注释的关系加载的)并且似乎没有办法重新附加它们。在手动添加实体列表中的所有一对多记录后,当 hibernate 命中列表的 get 方法时,它仍然尝试急切/延迟加载列表(尽管列表已经设置)。

尝试的优化 - 数据集的预加载

我们尝试的另一种优化技术是提前预加载数据集。在加载所有核心实体后,我们构建了一个 pk 列表并触发了一个查询以加载所有一对多数据集。但是当hibernate再次点击列表数据的getter时,它再次尝试急切/延迟加载列表,忽略会话中已经预加载的内容(可能需要启用缓存?)。

建议?

我们正朝着许多不同的方向前进,但收效甚微,希望有人能够为我们指明正确的道路(或指出一条新的道路!)!

0 投票
1 回答
578 浏览

java - 等效标准构建器查询的复杂查询(EntityManager)

我的查询是这样的:

query1 = select a.id from entity1 a where a.id in (:List1)
and not exists (select ex2 from entity2 ex2 where ex2.assignedId = a.id)
union
select ex.assignedId from entity2 ex ,entity3 pi
where ex. entity3Id = pi.id 和 ex.assignedId 在 (:List1)
和 ex.assignedTypeId = :assignedTypeId 和 pi.processStatus = :status
并且不存在
(从 entity2 ex1 中选择 ex1.assignedId , entity3 pi1
其中 ex1.entity3Id = pi1.id和 ex1.assignedId = ex.assignedId
和 ex1.assignedTypeId = :assignedTypeId
和 pi1.processStatus <> :status);

在尝试执行查询时,

查询现有Ids=em.createQuery(query1); //设置所有参数

在 org.hibernate.hql.ast.ParameterTranslationsImpl 的第 87 行抛出 NullPointerException

完全检查了所有的大括号和参数。等效转换在 mysql 中有效。有人可以帮助我使用 CriteriaBuilder 转换查询,发现很难进行转换。