diff --git a/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Content.java b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Content.java new file mode 100755 index 00000000000000..e7d8ca5b56705d --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Content.java @@ -0,0 +1,17 @@ +package io.quarkus.it.panache; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; + +@Entity(name = "content") +@Inheritance(strategy = InheritanceType.JOINED) +public class Content extends EntityBase { + @Column(nullable = false) + public String name; + + // public String getName() { + // return name; + // } +} diff --git a/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/EntityBase.java b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/EntityBase.java new file mode 100755 index 00000000000000..5fa65b311c6195 --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/EntityBase.java @@ -0,0 +1,15 @@ +package io.quarkus.it.panache; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@MappedSuperclass +public abstract class EntityBase extends PanacheEntityBase { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + public Long id; +} diff --git a/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Folder.java b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Folder.java new file mode 100755 index 00000000000000..03805fd2ea05d6 --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Folder.java @@ -0,0 +1,11 @@ +package io.quarkus.it.panache; + +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.ManyToOne; + +@Entity(name = "folder") +public class Folder extends EntityBase { + @ManyToOne(fetch = FetchType.LAZY, optional = false) + public Content content; +} diff --git a/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/FolderEndPoint.java b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/FolderEndPoint.java new file mode 100755 index 00000000000000..4e593f6e8612a0 --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/FolderEndPoint.java @@ -0,0 +1,18 @@ +package io.quarkus.it.panache; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/folder") +public class FolderEndPoint { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + Folder f = Folder.findById(1L); + Content content = f.content; + return "name: " + content.name; + } +} diff --git a/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Video.java b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Video.java new file mode 100755 index 00000000000000..afa2487707dd01 --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/java/io/quarkus/it/panache/Video.java @@ -0,0 +1,10 @@ +package io.quarkus.it.panache; + +import javax.persistence.Column; +import javax.persistence.Entity; + +@Entity(name = "video") +public class Video extends Content { + @Column(nullable = false) + public long length; +} diff --git a/integration-tests/hibernate-orm-panache/src/main/resources/import.sql b/integration-tests/hibernate-orm-panache/src/main/resources/import.sql new file mode 100755 index 00000000000000..7bdc9b0ca9b33e --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/main/resources/import.sql @@ -0,0 +1,2 @@ +insert into content values (1, 'it is working!'); +insert into folder values (1, 1); diff --git a/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/HibernateProxyFieldAccessTest.java b/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/HibernateProxyFieldAccessTest.java new file mode 100644 index 00000000000000..9835334310a0c7 --- /dev/null +++ b/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/HibernateProxyFieldAccessTest.java @@ -0,0 +1,21 @@ +package io.quarkus.it.panache; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +import org.junit.jupiter.api.Test; + +import io.quarkus.test.junit.QuarkusTest; + +@QuarkusTest +public class HibernateProxyFieldAccessTest { + + @Test + public void testHelloEndldpoint() { + given() + .when().get("/folder") + .then() + .statusCode(200) + .body(is("name: it is working!")); + } +}