diff --git a/pom.xml b/pom.xml
index 0f43ad9e4..c37a4f2f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -552,8 +552,7 @@
sql-db/panache-flyway
sql-db/reactive-rest-data-panache
sql-db/vertx-sql
-
-
+ sql-db/hibernate-reactive
sql-db/reactive-vanilla
sql-db/hibernate-fulltext-search
sql-db/narayana-transactions
@@ -585,8 +584,7 @@
env-info
service-binding/postgresql-crunchy-classic
-
-
+ service-binding/postgresql-crunchy-reactive
@@ -601,8 +599,7 @@
env-info
spring/spring-data
spring/spring-web
-
-
+ spring/spring-web-reactive
spring/spring-properties
spring/spring-cloud-config
cache/spring
diff --git a/spring/spring-web-reactive/src/main/java/io/quarkus/ts/spring/web/reactive/boostrap/web/BookController.java b/spring/spring-web-reactive/src/main/java/io/quarkus/ts/spring/web/reactive/boostrap/web/BookController.java
index 1de6ea586..fc0adcc82 100644
--- a/spring/spring-web-reactive/src/main/java/io/quarkus/ts/spring/web/reactive/boostrap/web/BookController.java
+++ b/spring/spring-web-reactive/src/main/java/io/quarkus/ts/spring/web/reactive/boostrap/web/BookController.java
@@ -23,12 +23,13 @@
import org.springframework.web.bind.annotation.RestController;
import io.quarkus.hibernate.reactive.panache.Panache;
+import io.quarkus.hibernate.reactive.panache.common.WithSession;
+import io.quarkus.hibernate.reactive.panache.common.WithTransaction;
import io.quarkus.hibernate.reactive.panache.common.runtime.ReactiveTransactional;
import io.quarkus.ts.spring.web.reactive.boostrap.persistence.model.Book;
import io.quarkus.ts.spring.web.reactive.boostrap.persistence.repo.BookRepository;
import io.quarkus.ts.spring.web.reactive.boostrap.web.exception.BookIdMismatchException;
import io.quarkus.ts.spring.web.reactive.boostrap.web.exception.BookNotFoundException;
-import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.Uni;
@RestController
@@ -42,6 +43,7 @@ public class BookController {
@Autowired
BookRepository bookRepository;
+ @WithSession
@GetMapping
public Uni> findAll() {
return bookRepository.listAll().onItem()
@@ -49,12 +51,17 @@ public Uni> findAll() {
.ifNoItem().after(Duration.ofSeconds(FAIL_AFTER_SECONDS)).failWith(BookNotFoundException::new);
}
+ @WithSession
@GetMapping("/title/{bookTitle}")
- public Multi findByTitle(@PathVariable String bookTitle) {
+ public Uni> findByTitle(@PathVariable String bookTitle) {
return bookRepository.findByTitle(bookTitle)
- .ifNoItem().after(Duration.ofSeconds(FAIL_AFTER_SECONDS)).failWith(BookNotFoundException::new);
+ .collect()
+ .asList()
+ .ifNoItem()
+ .after(Duration.ofSeconds(FAIL_AFTER_SECONDS)).failWith(BookNotFoundException::new);
}
+ @WithSession
@GetMapping("/{id}")
public Uni findOne(@PathVariable long id) {
return bookRepository.findById(id)
@@ -62,6 +69,7 @@ public Uni findOne(@PathVariable long id) {
.ifNoItem().after(Duration.ofSeconds(FAIL_AFTER_SECONDS)).failWith(BookNotFoundException::new);
}
+ @WithSession
@PostMapping
public Uni create(@RequestBody Book book) {
return Panache.withTransaction(() -> bookRepository.persist(book))
@@ -69,7 +77,7 @@ public Uni create(@RequestBody Book book) {
}
@DeleteMapping("/{id}")
- @ReactiveTransactional
+ @WithTransaction
public Uni delete(@PathVariable long id) {
return bookRepository.deleteById(id)
.map(deleted -> deleted
diff --git a/spring/spring-web-reactive/src/main/resources/application.properties b/spring/spring-web-reactive/src/main/resources/application.properties
index 84e4b93be..e15d0025c 100644
--- a/spring/spring-web-reactive/src/main/resources/application.properties
+++ b/spring/spring-web-reactive/src/main/resources/application.properties
@@ -4,7 +4,7 @@ quarkus.datasource.db-kind=mariadb
#quarkus.datasource.reactive.url=vertx-reactive:mysql://localhost/quarkus_test
#quarkus.datasource.username=admin
#quarkus.datasource.password=admin
-quarkus.hibernate-orm.dialect=org.hibernate.dialect.MariaDB102Dialect
+quarkus.hibernate-orm.dialect=org.hibernate.dialect.MariaDBDialect
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.log.console.format=%d{HH:mm:ss.SSS} [%t] %-5p %c{36} - %m%n
diff --git a/sql-db/hibernate-reactive/src/main/java/io/quarkus/ts/hibernate/reactive/database/Author.java b/sql-db/hibernate-reactive/src/main/java/io/quarkus/ts/hibernate/reactive/database/Author.java
index 69fbaf5fb..ce23d06e4 100644
--- a/sql-db/hibernate-reactive/src/main/java/io/quarkus/ts/hibernate/reactive/database/Author.java
+++ b/sql-db/hibernate-reactive/src/main/java/io/quarkus/ts/hibernate/reactive/database/Author.java
@@ -10,6 +10,7 @@
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
@@ -32,7 +33,8 @@ public class Author {
@Size(max = MAX_NAME_LENGTH)
private String name;
- @OneToMany(mappedBy = "author", cascade = PERSIST, fetch = FetchType.EAGER)
+ @JoinColumn(name = "author")
+ @OneToMany(cascade = PERSIST, fetch = FetchType.EAGER)
private List books = new ArrayList<>();
public Author(String name) {
diff --git a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/AbstractDatabaseHibernateReactiveIT.java b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/AbstractDatabaseHibernateReactiveIT.java
index bf3310805..9e3288cc8 100644
--- a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/AbstractDatabaseHibernateReactiveIT.java
+++ b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/AbstractDatabaseHibernateReactiveIT.java
@@ -16,6 +16,7 @@
import org.junit.jupiter.api.TestMethodOrder;
import io.quarkus.test.bootstrap.RestService;
+import io.quarkus.test.scenarios.annotations.DisabledOnNative;
import io.restassured.http.ContentType;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
@@ -155,6 +156,7 @@ public void searchWithJoin() {
assertTrue(result.contains("Thinking fast and slow"));
}
+ @DisabledOnNative(reason = "https://github.com/quarkusio/quarkus/issues/32114")
@Test
public void searchWithLimit() {
String result = getApp().given()
@@ -242,6 +244,7 @@ public void useTransaction() {
.body("$", hasItem("Ubik"));
}
+ @DisabledOnNative(reason = "https://github.com/quarkusio/quarkus/issues/32114")
@Test
public void convertValue() {
Response response = getApp().given().get("/library/isbn/2");
@@ -260,6 +263,7 @@ public void convertZeroValue() {
assertEquals("0", response.body().asString());
}
+ @DisabledOnNative(reason = "https://github.com/quarkusio/quarkus/issues/32114")
@Test
public void setConvertedValue() {
Response change = getApp().given().put("/library/isbn/1/5170261586");
diff --git a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/MsSQLDatabaseHibernateReactiveIT.java b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/MsSQLDatabaseHibernateReactiveIT.java
index ebef9f0de..a4321e21d 100644
--- a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/MsSQLDatabaseHibernateReactiveIT.java
+++ b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/MsSQLDatabaseHibernateReactiveIT.java
@@ -1,11 +1,15 @@
package io.quarkus.ts.hibernate.reactive;
+import org.junit.jupiter.api.Disabled;
+
import io.quarkus.test.bootstrap.RestService;
import io.quarkus.test.bootstrap.SqlServerService;
import io.quarkus.test.scenarios.QuarkusScenario;
import io.quarkus.test.services.Container;
import io.quarkus.test.services.QuarkusApplication;
+// TODO: enable with next Hibernate Reactive bump in Quarkus main
+@Disabled("https://github.com/quarkusio/quarkus/issues/32102#issuecomment-1482501348")
@QuarkusScenario
public class MsSQLDatabaseHibernateReactiveIT extends AbstractDatabaseHibernateReactiveIT {
diff --git a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/OracleDatabaseIT.java b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/OracleDatabaseIT.java
index eebf2300f..46b168dc1 100644
--- a/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/OracleDatabaseIT.java
+++ b/sql-db/hibernate-reactive/src/test/java/io/quarkus/ts/hibernate/reactive/OracleDatabaseIT.java
@@ -1,11 +1,15 @@
package io.quarkus.ts.hibernate.reactive;
+import org.junit.jupiter.api.Disabled;
+
import io.quarkus.test.bootstrap.OracleService;
import io.quarkus.test.bootstrap.RestService;
import io.quarkus.test.scenarios.QuarkusScenario;
import io.quarkus.test.services.Container;
import io.quarkus.test.services.QuarkusApplication;
+// TODO: enable with next Hibernate Reactive bump in Quarkus main
+@Disabled("https://github.com/quarkusio/quarkus/issues/32102#issuecomment-1482501348")
@QuarkusScenario
public class OracleDatabaseIT extends AbstractDatabaseHibernateReactiveIT {
diff --git a/sql-db/hibernate-reactive/src/test/resources/oracle_import.sql b/sql-db/hibernate-reactive/src/test/resources/oracle_import.sql
index fa7356a6b..fcb55ac2e 100644
--- a/sql-db/hibernate-reactive/src/test/resources/oracle_import.sql
+++ b/sql-db/hibernate-reactive/src/test/resources/oracle_import.sql
@@ -1,10 +1,10 @@
-DROP TABLE authors;
+DROP TABLE authors CASCADE CONSTRAINTS;
CREATE TABLE AUTHORS(ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, NAME VARCHAR(100) NOT NULL);
INSERT INTO authors(id,name) VALUES (1, 'Homer');
INSERT INTO authors(id,name) VALUES (2, 'Vern');
INSERT INTO authors(id,name) VALUES (3, 'Dlugi');
INSERT INTO authors(id,name) VALUES (4, 'Kahneman');
-DROP TABLE books;
+DROP TABLE books CASCADE CONSTRAINTS;
CREATE TABLE books(id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, author INT references authors(id) , title VARCHAR(500) NOT NULL, isbn VARCHAR(50));
INSERT INTO books(author, title) VALUES (3, 'Slovník');
INSERT INTO books(author, title, isbn) VALUES (4, 'Thinking fast and slow', '978-0374275631');
diff --git a/sql-db/hibernate-reactive/src/test/resources/postgres_import.sql b/sql-db/hibernate-reactive/src/test/resources/postgres_import.sql
index 5ec95c6c5..a1170c7c7 100644
--- a/sql-db/hibernate-reactive/src/test/resources/postgres_import.sql
+++ b/sql-db/hibernate-reactive/src/test/resources/postgres_import.sql
@@ -1,10 +1,10 @@
-DROP TABLE IF EXISTS authors;
+DROP TABLE IF EXISTS authors CASCADE;
CREATE TABLE authors(id SERIAL PRIMARY KEY, name TEXT NOT NULL);
INSERT INTO authors(id,name) VALUES (1, 'Homer');
INSERT INTO authors(id,name) VALUES (2, 'Vern');
INSERT INTO authors(id,name) VALUES (3, 'Dlugi');
INSERT INTO authors(id,name) VALUES (4, 'Kahneman');
-DROP TABLE IF EXISTS books;
+DROP TABLE IF EXISTS books CASCADE;
CREATE TABLE books(id SERIAL PRIMARY KEY, author int references authors(id) , title TEXT NOT NULL, isbn TEXT NULL);
INSERT INTO books(author, title) VALUES (3, 'Slovník');
INSERT INTO books(author, title, isbn) VALUES (4, 'Thinking fast and slow', '978-0374275631');