////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
////

[[introduction-releaseHistory]]
== Release History

==== GORM for Hibernate 7 (Grails {grailsMajorVersion}.x)

GORM for Hibernate 7 is a new integration module shipping with Grails {grailsMajorVersion}.x that targets Hibernate ORM 7.x and Jakarta EE 10.

Key features and changes relative to GORM for Hibernate 5:

* **Hibernate ORM 7** — Full support for Hibernate 7, including Jakarta Persistence 3.2 and the Apache License 2.0.
* **Spring Boot 4 / Spring Framework 7** — Grails {grailsMajorVersion} vendors the removed `org.springframework.orm.hibernate5` classes into `grails-data-hibernate7-spring-orm` under the `org.grails.orm.hibernate.support.hibernate7` package.
* **HQL injection safety** — Single-argument `find`, `findAll`, `executeQuery`, and `executeUpdate` accept a plain `String` as on Hibernate 5; when a Groovy GString is passed, its `${value}` interpolations are bound as named parameters instead of being interpolated into the query text, so the idiomatic interpolated form is injection-safe by binding.
* **SQL query helpers** - `findWithSql` / `findAllWithSql` are available with the same names as Hibernate 5.
* **Native query temporal types** — Native SQL queries return `java.time` types by default instead of legacy `java.sql` types.
* **Removed deprecated Session API** — Hibernate's `save()`, `update()`, `delete()`, `load()`, and `get()` are replaced by JPA equivalents (`persist`, `merge`, `remove`, `getReference`, `find`). GORM's own dynamic methods are unaffected.
* **`CascadeType.SAVE_UPDATE` removed** — GORM's ORM DSL `cascade: 'save-update'` string continues to work; direct use of the Hibernate `CascadeType` enum requires migration.
* **Removed annotations** — `@Where` → `@SQLRestriction`, `@Proxy` removed, `@LazyCollection` removed.
* **DDL changes** — `char`/`Character` maps to `varchar(1)`; Oracle `float`/`double` map to IEEE float types; array columns use JSON/XML on some databases.

==== Previous History

For the history of GORM for Hibernate 5 (Grails 7.x and earlier), see the
https://grails.apache.org/docs/7.0.x/guide/single.html[Grails 7 User Guide] or the GORM for Hibernate 5 documentation.
