tree d0f468d1f9a2505b022ee1614e3d6b9a1d7404fd
parent 449afba6c208774c1d41a34671e2b4a69c857431
parent 8594b13712d1e6c71f5fa37829ddbe5e234f70c4
author Marge Bot <marge@benkard.de> 1693644268 +0000
committer Marge Bot <marge@benkard.de> 1693644268 +0000

Update all non-major dependencies to v6.3.0.Final (mulk/mulkcms2!36)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [org.hibernate.orm:hibernate-envers](https://hibernate.org/orm) ([source](https://github.com/hibernate/hibernate-orm)) | build | minor | `6.2.7.Final` -> `6.3.0.Final` |
| [org.hibernate.orm:hibernate-core](https://hibernate.org/orm) ([source](https://github.com/hibernate/hibernate-orm)) | build | minor | `6.2.7.Final` -> `6.3.0.Final` |

---

### Release Notes

<details>
<summary>hibernate/hibernate-orm</summary>

### [`v6.3.0.Final`](https://github.com/hibernate/hibernate-orm/blob/HEAD/changelog.txt#Changes-in-630Final-August-31-2023)

[Compare Source](https://github.com/hibernate/hibernate-orm/compare/6.2.8...6.3.0)

https://hibernate.atlassian.net/projects/HHH/versions/32177

\*\* Bug
\* \[HHH-17116] - AssertionError when using lateral join to subquery if criteria tree copy is enabled
\* \[HHH-17085] - SQLGrammarException when selecting property of grouped join association in HyperSQL and PostgreSQL
\* \[HHH-17081] - Loading an entity which uses joined inheritance fails if two or more implementations have the same association property name
\* \[HHH-17078] - Memory leak in ScrollableResultsConsumer
\* \[HHH-17075] - Lazy loading of association with non-PK referencedColumnName always yields null when bytecode enhancement is enabled
\* \[HHH-17074] - Type inference in duration arithmetic is wrong
\* \[HHH-17072] - Tenant Id defined in XML mapping is ignored
\* \[HHH-17071] - Basic Collection of 'Converted' Embeddables stopped working with 6.2
\* \[HHH-17064] - Fetch mode select  causes StackOverflowError if used together with fetch type lazy
\* \[HHH-17046] - SchemaManager.truncateMappedObjects() does not repopulate table generators
\* \[HHH-17045] - Unable to locate parameter for RESTRICT - UPDATE error when updating entity with RowId
\* \[HHH-17041] - Embeddable and Generics throws IllegalArgumentException
\* \[HHH-17039] - Variable name confusion in documentation
\* \[HHH-17035] - Bytecode enhancement leads to StackOverflowError with specific setup involving different generic parameter names
\* \[HHH-17034] - Bytecode enhancement leads to broken constructor for a generic embedded field in a twice removed MappedSuperclass
\* \[HHH-17033] - Invalid SQL generated when implicit joins are used
\* \[HHH-17019] - EntityListener is not triggered for a LAZY loaded association when using bytecode enhancement
\* \[HHH-17016] - Using a legacy MySQL dialect leads to an error
\* \[HHH-17014] - Complete "Mapping Maps" chapter of User Guide
\* \[HHH-17009] - Hibernate 6.2 migration guide does explain how to deal with removal of AbstractPostInsertGenerator (affects IdentityGenerator)
\* \[HHH-17006] - Query for enum with IS NULL fails with NullPointerException (org.hibernate.metamodel.mapping.JdbcMapping.getJdbcValueBinder())
\* \[HHH-17004] - Nullpointer wenn using setFirstResult and setMaxResults in diffrent combinations
\* \[HHH-17001] - An "on"-clause referencing the affected join node causes a StackOverflowException
\* \[HHH-17000] - Do not keep static references to log levels
\* \[HHH-16997] - Embedded components in HibernateProxy are not initilized when entity has reference to another entity of the same type
\* \[HHH-16989] - 'cast(string as String(10))' & 'cast(string as Binary(10))' broken on MySQL
\* \[HHH-16988] - AssertionError in AbstractSqmPath.copyTo when using subquery correlated to root with more than 1 level in the class hierarchy
\* \[HHH-16979] - SQLGrammarException for JOINED entity with additional join in query
\* \[HHH-16977] - NullPointerException in EntityEntryContext.downgradeLocks
\* \[HHH-16970] - Orphan removal not working in [@&#8203;Embeddable](https://github.com/Embeddable) for FetchType.EAGER collections
\* \[HHH-16968] - StackOverflowError when using NaturalIdLoadAccess and bi-directional association
\* \[HHH-16966] - StackOverFlowError with [@&#8203;ManyToOne](https://github.com/ManyToOne) and [@&#8203;Proxy](https://github.com/Proxy)( lazy=false )
\* \[HHH-16962] - General documentation improvements
\* \[HHH-16959] - Fail to batch delete entities with nested embeddeds
\* \[HHH-16952] - Bytecode enhancement now requires embedded component to be [@&#8203;Embeddable](https://github.com/Embeddable)
\* \[HHH-16939] - Optimistic and Pessimistic Force Increment Update Statements are not committed when using a batch
\* \[HHH-16938] - Meta annotation [@&#8203;AnyDiscriminatorValue](https://github.com/AnyDiscriminatorValue) does not work
\* \[HHH-16937] - Persisting entity with nullable [@&#8203;Any](https://github.com/Any) field throws “not-null property references a null or transient value”
\* \[HHH-16918] - Can't use the the primary id column as the joincolumn for [@&#8203;Any](https://github.com/Any) association
\* \[HHH-16911] - MapBackedClassValue ClassLoader leak
\* \[HHH-16901] - Embedded field in entity association from composite key not correctly instantiated
\* \[HHH-16891] - better typechecking of HQL arithmetic expressions
\* \[HHH-16878] - Invalid SQL generated for mutation when using association with [@&#8203;NotFound](https://github.com/NotFound)
\* \[HHH-16825] - Cascading an entity with a composite key causes NullPointerException in AbstractClassJavaType.extractHashCode
\* \[HHH-16823] - support for 'nvarchar' on MySQL 5.7
\* \[HHH-16819] - JAKARTA_JPA_GROUP_MREFIX is pointing towards incorrect value
\* \[HHH-16816] - Hibernate 6.2 could not execute certain delete statements
\* \[HHH-16798] - ClassCastException in Hibernate 6 when "join fetch" is used in a query with entity inheritance
\* \[HHH-16766] - Unable to fully load entity with IdClass lazily or with max fetch depth
\* \[HHH-16759] - Merge fails when entity has an Embedded Java record

### [`v6.2.8.Final`](https://github.com/hibernate/hibernate-orm/compare/6.2.7...6.2.8)

[Compare Source](https://github.com/hibernate/hibernate-orm/compare/6.2.7...6.2.8)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->