Skip to content

Commit 3060ddd

Browse files
authored
Merge pull request #48348 from yrodiere/jakarta-data-unwrap
Upgrade to Hibernate ORM 7.0.2 + Fix ClassCastException in Jakarta Data
2 parents 75d7976 + 5c20509 commit 3060ddd

File tree

6 files changed

+44
-1
lines changed

6 files changed

+44
-1
lines changed

extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,4 +502,9 @@ public CacheMode getCacheMode() {
502502
public void setCacheMode(CacheMode cacheMode) {
503503
delegate.get().setCacheMode(cacheMode);
504504
}
505+
506+
@Override
507+
public <T> T unwrap(Class<T> type) {
508+
return delegate.get().unwrap(type);
509+
}
505510
}

extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,4 +875,15 @@ public void setCacheMode(CacheMode cacheMode) {
875875
emr.statelessSession.setCacheMode(cacheMode);
876876
}
877877
}
878+
879+
@Override
880+
public <T> T unwrap(Class<T> type) {
881+
if (type.isAssignableFrom(StatelessSession.class)) {
882+
return (T) this;
883+
}
884+
checkBlocking();
885+
try (SessionResult emr = acquireSession()) {
886+
return emr.statelessSession.unwrap(type);
887+
}
888+
}
878889
}

integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyEntityResource.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.util.List;
44

5+
import jakarta.data.Order;
6+
import jakarta.data.Sort;
57
import jakarta.enterprise.context.ApplicationScoped;
68
import jakarta.inject.Inject;
79
import jakarta.transaction.Transactional;
@@ -30,6 +32,11 @@ public void create(MyEntity entity) {
3032
repository.insert(entity);
3133
}
3234

35+
@GET
36+
public List<MyEntity> get() {
37+
return repository.findAll(Order.by(Sort.asc(MyEntity_.NAME))).toList();
38+
}
39+
3340
@GET
3441
@Transactional
3542
@Path("/by/name/{name}")

integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package io.quarkus.it.hibernate.jpamodelgen.data;
22

33
import java.util.List;
4+
import java.util.stream.Stream;
45

6+
import jakarta.data.Order;
57
import jakarta.data.repository.CrudRepository;
68
import jakarta.data.repository.Delete;
9+
import jakarta.data.repository.Find;
710
import jakarta.data.repository.Query;
811
import jakarta.data.repository.Repository;
912

1013
@Repository
1114
public interface MyRepository extends CrudRepository<MyEntity, Integer> {
1215

16+
@Find
17+
Stream<MyEntity> findAll(Order<MyEntity> order);
18+
1319
@Query("select e from MyEntity e where e.name like :name")
1420
List<MyEntity> findByName(String name);
1521

integration-tests/hibernate-orm-data/src/test/java/io/quarkus/it/hibernate/jpamodelgen/data/HibernateOrmDataTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.quarkus.it.hibernate.jpamodelgen.data;
22

33
import static io.restassured.RestAssured.given;
4+
import static org.hamcrest.CoreMatchers.containsString;
5+
import static org.hamcrest.CoreMatchers.equalTo;
46

57
import org.junit.jupiter.api.Test;
68

@@ -20,6 +22,12 @@ public void staticMetamodel() {
2022
.when().get(ROOT + "/by/name/{name}")
2123
.then()
2224
.statusCode(404);
25+
given()
26+
.contentType(ContentType.JSON)
27+
.when().get(ROOT)
28+
.then()
29+
.statusCode(200)
30+
.body(equalTo("[]"));
2331
given()
2432
.body(new MyEntity("foo"))
2533
.contentType(ContentType.JSON)
@@ -32,6 +40,12 @@ public void staticMetamodel() {
3240
.when().get(ROOT + "/by/name/{name}")
3341
.then()
3442
.statusCode(200);
43+
given()
44+
.contentType(ContentType.JSON)
45+
.when().get(ROOT)
46+
.then()
47+
.statusCode(200)
48+
.body(containsString("\"foo\""));
3549

3650
// Update
3751
given()

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
<jacoco.version>0.8.13</jacoco.version>
7272
<kubernetes-client.version>7.3.1</kubernetes-client.version> <!-- Please check with Java Operator SDK team before updating -->
7373
<rest-assured.version>5.5.5</rest-assured.version>
74-
<hibernate-orm.version>7.0.1.Final</hibernate-orm.version> <!-- WARNING when updating, also align the versions below -->
74+
<hibernate-orm.version>7.0.2.Final</hibernate-orm.version> <!-- WARNING when updating, also align the versions below -->
7575
<jakarta.persistence-api.version>3.2.0</jakarta.persistence-api.version> <!-- version controlled by Hibernate ORM's needs -->
7676
<antlr.version>4.13.0</antlr.version> <!-- version controlled by Hibernate ORM's needs -->
7777
<bytebuddy.version>1.15.11</bytebuddy.version> <!-- version controlled by Hibernate ORM's needs -->

0 commit comments

Comments
 (0)