问题标签 [hibernate-5.x]

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 回答
764 浏览

grails-orm - 使用身份 PK 为 Oracle 12c 配置 Grails 3.0.9?

我正在尝试映射我的域对象以使用新的 Oracle 12c 身份类型主键,也就是其他一些系统中的自动增量。

Hibernate 4没有Oracle12cDialect,它只有Oracle10gDialect。

Oracle10gDialect 有一个名为 supportsIdentityColumns() 的方法,该方法被硬编码为返回 false,因此将我的 GORM 域对象映射到 generator:"identity" 会导致错误,指出 Oracle10gDialect 不支持身份生成器。

我不能使用 GORM 选择生成器,因为我没有辅助唯一键,并且我不能使用 Hibernate 生成的键,因为 Hibernate 和其他(外部)插入到表中会生成重叠键。

现有 Oracle 12c DDL 示例:

GORM 对象:

在内存数据库结果中(完美运行):

Oracle 数据库结果(损坏):

如何让 Grails 3.0.9 与上述 Oracle 表定义一起使用?

0 投票
2 回答
6608 浏览

java - spring hibernate 5 Error Already value [org.springframework.orm.hibernate5.SessionHolder for key bound to thread

我只是升级到休眠 5 并在尝试使用 Spring Hibernate 事务管理器获取当前会话时遇到以下错误

这是错误的完整堆栈跟踪

0 投票
1 回答
4519 浏览

hibernate - 从 3 迁移到 Hibernate 5

我正在从 3 迁移到 Hibernate 5.0.3.Final。在 3.x 中,我使用 joda-time 将 LocalDateTime 持久保存在 oracle DB 中。现在我看到hibernate 5不支持joda-time。请让我知道什么是最好的选择?

这是代码示例。

0 投票
2 回答
6758 浏览

java - Java 8 + Hibernate 5 MySQL TIMESTAMP/DATETIME 到 LocalDateTime 的映射

决定更新到 Hibernate 5 以删除现有的 Date 到 LocalDateTime 的转换。我从 Maven 安装了 hibernate-java8 工件。然后我将我的休眠实体日期时间替换为

抛出了这个异常

org.hibernate.AnnotationException:@Temporal 只能在 java.util.Date 或 java.util.Calendar 属性上设置

如果我删除 @Temporal 则异常变为

ClassCastException:java.util.Date 不能转换为 java.time.LocalDateTime

我认为 Java 8 + Hibernate 5 支持 LocalDateTime?请指教。

0 投票
2 回答
41191 浏览

java - 如何使用 Spring 4 配置 Hibernate 5

我想升级到 Hibernate 5,但由于一些奇怪的原因我无法让它工作。

我使用 Hibernate 4 的 spring 上下文配置如下所示:

我省略了数据源和 hibernateClasses bean 定义。

对于 Hibernate 5,我将包名称更改为 hibernate5,如下所示:

当我运行测试时,应用程序上下文无法启动,因为它找不到 LocalSessionFactoryBean 类:-S。此类驻留在 spring-orm JAR 中并且实际上存在,但由于某种原因无法找到它并引发以下异常:

我的 Maven 依赖项如下:

有人知道我做错了什么吗?

0 投票
1 回答
762 浏览

hibernate - Hibernate 5 ORM 的空间谓词

我正在将现有应用程序从 Hibernate 3.6.10.Final(带有 hibernate-spatial 1.1.1)迁移到Hibernate 5 ORM,它应该包括空间功能。因此,我删除了org.hibernatespatialpom.xml 中的引用并升级 3.6.10.Final 以便我拥有:

在我使用空间标准创建查询之前,我会遇到编译错误,就好像它找不到某些类一样。例如,在我有类似的东西之前:

Eclipse 将提出“SpatialRelateExpression 无法解决”(对于SpatialRestrictions. 即使我认为将导入更改为这些就足够了:

Eclipse 会再次抱怨“无法解析导入 org.hibernate.spatial”。当我打开hibernate-core-5.0.4.Final.jarhibernate-entity-manager-5.0.4.Final.jar库时,我找不到org.hibernate.spatial包,但根据Hibernate 5关于那些空间相关类的文档,我希望它们在那里。

我为此尝试了谷歌,但可能是因为 Hibernate 5 已经很久没有上市了,所以我不断得到对 Hibernate 4 的引用。

我的问题是:

  • 我是否需要更改 pom.xml 和 Maven 依赖项中的任何内容才能使用空间功能?我希望它们能够完全集成到 Hibernate 主库中。
  • 为了使用 Hibernate 5,我应该对我的空间查询条件进行任何重大更改吗?我找不到很好的例子。
0 投票
2 回答
7381 浏览

java - 休眠 5 事务未由 Spring 4 启动

根据本教程,我试图用 Spring 4 管理 Hibernate 5 事务。当达到 session.get() 方法时,似乎事务还没有启动。Spring 如何知道何时开始和结束事务?@Transactional 注释不应该正是这样做的吗?

实体

服务

上下文 beans.xml

主要的

0 投票
1 回答
7589 浏览

hibernate - hibernate 5 + ZonedDateTime + postgresql 包括时区和偏移量

我有一个正在运行的应用程序 spring boot 1.3 + hibernate 5 + java 8 + ZonedDateTime + postgresql 并且在其中一个表中我有以下字段。

如果我运行该应用程序,那么我会看到默认情况下会产生“没有时区的时间戳”

我知道如果我将 columnDefinition="TIMESTAMP WITH TIME ZONE" 添加到列中,即类似于

然后它工作正常,我可以看到休眠创建了一个带有时区的列,但是如果我理解正确,这将只适用于 postgres,即如果我明天将数据库更改为 mysql,那么休眠将引发错误。

因此我的问题是一般如何做到这一点,即告诉休眠创建一个应该包含时区和偏移量的列。我的观点是,由于故意创建 Java 类型“ZonedDateTime”以包括时区和 UTC 时间偏移,那么休眠将默认创建一个包含时区的列。因此问题又来了:告诉休眠包含时区和偏移量的正确方法是什么。

这是我的pom的一部分:

和我的显示方言的属性文件

0 投票
0 回答
130 浏览

oracle - HSQLDB 无法从 JPA 注释中正确识别主键 + 违反完整性约束

我们将 Oracle 用于生产数据库,将 HSQLDB 用于内存单元测试数据库和 DBUnit。我正在从数据集文件加载一些预定义的数据。两种环境都使用 Hibernate(现在我从 3.5 升级到 5.0.3)作为 JPA 提供程序。以下代码在生产中正常工作,但抛出 SQL 错误:-104,SQLState:23505 - 完整性约束违规:在 jUnit 下运行时,唯一约束或索引违规。当我创建新记录时,id 填充为 1 而不是数据集文件中的 max id。

请让我知道任何帮助。

这是实体、测试类和数据集文件。

实体:

资源测试:

数据集文件:

0 投票
3 回答
4062 浏览

oracle - Hibernate 5 序列生成问题

我正在从 3 迁移到 hibernate 5。我看到序列生成器在 Hibernate 5 中无法正常工作。我定义的序列的最小值为 1000 并递增 1。但是当我尝试创建新的实体记录时,我看到了插入 id 为 951 的记录。似乎 id 与实际序列下一个值相比减去了 50。在我的情况下,ID 应该是 1000。

请让我知道任何帮助。

这是我的实体和序列:

实体:

序列: