diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java index df0b070ed3c7a..5c508ad6b746e 100644 --- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java +++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java @@ -502,4 +502,9 @@ public CacheMode getCacheMode() { public void setCacheMode(CacheMode cacheMode) { delegate.get().setCacheMode(cacheMode); } + + @Override + public T unwrap(Class type) { + return delegate.get().unwrap(type); + } } diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java index 4837d322adf49..27ec53a6e60a4 100644 --- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java +++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java @@ -875,4 +875,15 @@ public void setCacheMode(CacheMode cacheMode) { emr.statelessSession.setCacheMode(cacheMode); } } + + @Override + public T unwrap(Class type) { + if (type.isAssignableFrom(StatelessSession.class)) { + return (T) this; + } + checkBlocking(); + try (SessionResult emr = acquireSession()) { + return emr.statelessSession.unwrap(type); + } + } } diff --git a/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyEntityResource.java b/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyEntityResource.java index 5572299945ca6..92de143b39f66 100644 --- a/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyEntityResource.java +++ b/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyEntityResource.java @@ -2,6 +2,8 @@ import java.util.List; +import jakarta.data.Order; +import jakarta.data.Sort; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; @@ -30,6 +32,11 @@ public void create(MyEntity entity) { repository.insert(entity); } + @GET + public List get() { + return repository.findAll(Order.by(Sort.asc(MyEntity_.NAME))).toList(); + } + @GET @Transactional @Path("/by/name/{name}") diff --git a/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyRepository.java b/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyRepository.java index d2c2073ec3be6..647b32e1c8172 100644 --- a/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyRepository.java +++ b/integration-tests/hibernate-orm-data/src/main/java/io/quarkus/it/hibernate/jpamodelgen/data/MyRepository.java @@ -1,15 +1,21 @@ package io.quarkus.it.hibernate.jpamodelgen.data; import java.util.List; +import java.util.stream.Stream; +import jakarta.data.Order; import jakarta.data.repository.CrudRepository; import jakarta.data.repository.Delete; +import jakarta.data.repository.Find; import jakarta.data.repository.Query; import jakarta.data.repository.Repository; @Repository public interface MyRepository extends CrudRepository { + @Find + Stream findAll(Order order); + @Query("select e from MyEntity e where e.name like :name") List findByName(String name); diff --git a/integration-tests/hibernate-orm-data/src/test/java/io/quarkus/it/hibernate/jpamodelgen/data/HibernateOrmDataTest.java b/integration-tests/hibernate-orm-data/src/test/java/io/quarkus/it/hibernate/jpamodelgen/data/HibernateOrmDataTest.java index 928f783b4692e..9bee20eed5fc9 100644 --- a/integration-tests/hibernate-orm-data/src/test/java/io/quarkus/it/hibernate/jpamodelgen/data/HibernateOrmDataTest.java +++ b/integration-tests/hibernate-orm-data/src/test/java/io/quarkus/it/hibernate/jpamodelgen/data/HibernateOrmDataTest.java @@ -1,6 +1,8 @@ package io.quarkus.it.hibernate.jpamodelgen.data; import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.equalTo; import org.junit.jupiter.api.Test; @@ -20,6 +22,12 @@ public void staticMetamodel() { .when().get(ROOT + "/by/name/{name}") .then() .statusCode(404); + given() + .contentType(ContentType.JSON) + .when().get(ROOT) + .then() + .statusCode(200) + .body(equalTo("[]")); given() .body(new MyEntity("foo")) .contentType(ContentType.JSON) @@ -32,6 +40,12 @@ public void staticMetamodel() { .when().get(ROOT + "/by/name/{name}") .then() .statusCode(200); + given() + .contentType(ContentType.JSON) + .when().get(ROOT) + .then() + .statusCode(200) + .body(containsString("\"foo\"")); // Update given() diff --git a/pom.xml b/pom.xml index 414052ac46b68..edb34899f2542 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 0.8.13 7.3.1 5.5.5 - 7.0.1.Final + 7.0.2.Final 3.2.0 4.13.0 1.15.11