Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hibernate panache codestart #21651

Merged
merged 2 commits into from
Jan 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
{#include readme-header /}
{#include readme-header /}

{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
[Related Hibernate with Panache section...](https://quarkus.io/guides/hibernate-orm-panache)
{/if}

{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
[Related Hibernate with Panache in Kotlin section...](https://quarkus.io/guides/hibernate-orm-panache-kotlin)
{/if}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package org.acme;

{#if !input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* \{@code
* @Inject
* EntityManager em;
*
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* em.persist(entity1);
*
* List<MyEntity> entities = em.createQuery("from MyEntity", MyEntity.class).getResultList();
* }
* }
*/
@Entity
public class MyEntity {
@Id
@GeneratedValue
public Long id;

public String field;
}
{/if}
{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
import io.quarkus.hibernate.orm.panache.PanacheEntity;
import javax.persistence.Entity;


/**
* Example JPA entity defined as a Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* {@see https://quarkus.io/guides/hibernate-orm-panache#solution-2-using-the-repository-pattern}.
*
* Usage (more example on the documentation)
*
* \{@code
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* entity1.persist();
*
* List<MyEntity> entities = MyEntity.listAll();
* }
* }
*/
@Entity
public class MyEntity extends PanacheEntity {
public String field;
}
{/if}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package org.acme

{#if !input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* \{@code
* @Inject
* lateinit var em:EntityManager;
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* em.persist(entity1);
*
* val entities:List<MyKotlinEntity> = em.createQuery("from MyEntity", MyKotlinEntity::class.java).getResultList()
* }
* }
*/
@Entity
class MyKotlinEntity {
@get:GeneratedValue
@get:Id
var id: Long? = null
var field: String? = null
}
{/if}
{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
import io.quarkus.hibernate.orm.panache.kotlin.PanacheEntity
import io.quarkus.hibernate.orm.panache.kotlin.PanacheCompanion
import javax.persistence.Entity

/**
* Example JPA entity defined as a Kotlin Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* {@see https://quarkus.io/guides/hibernate-orm-panache-kotlin#defining-your-repository}.
*
* Usage (more example on the documentation)
*
* \{@code
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* entity1.persist()
*
* val entities:List<MyKotlinEntity> = MyKotlinEntity.listAll()
* }
* }
*/
@Entity
class MyKotlinEntity: PanacheEntity() {
companion object: PanacheCompanion<MyKotlinEntity> {
fun byName(name: String) = list("name", name)
}

lateinit var field: String
}
{/if}
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/hibernate-orm-panache-kotlin.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ change or two. To Panache-enable your entity, you would define it something lik
[source,kotlin]
----
@Entity
class Person: PanacheEntity {
loicmathieu marked this conversation as resolved.
Show resolved Hide resolved
class Person: PanacheEntity() {
lateinit var name: String
lateinit var birth: LocalDate
lateinit var status: Status
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ metadata:
config:
- "quarkus.datasource."
- "quarkus.hibernate-orm."
codestart:
name: "hibernate-orm"
languages: [ "kotlin" ]
artifact: "io.quarkus:quarkus-project-core-extension-codestarts"
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ metadata:
config:
- "quarkus.datasource."
- "quarkus.hibernate-orm."
codestart:
name: "hibernate-orm"
languages: ["java"]
artifact: "io.quarkus:quarkus-project-core-extension-codestarts"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.quarkus.devtools.codestarts.quarkus;

import static io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog.Language.JAVA;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest;
import io.quarkus.maven.ArtifactKey;

public class HibernateOrmPanacheCodestartTest {

@RegisterExtension
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
.codestarts("hibernate-orm")
.extension(new ArtifactKey("io.quarkus", "quarkus-jdbc-h2"))
.extension(new ArtifactKey("io.quarkus", "quarkus-hibernate-orm-panache"))
.languages(JAVA)
.build();

@Test
void testContent() throws Throwable {
codestartTest.checkGeneratedSource("org.acme.MyEntity");
}

@Test
void buildAllProjectsForLocalUse() throws Throwable {
codestartTest.buildAllProjects();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.quarkus.devtools.codestarts.quarkus;

import static io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog.Language.KOTLIN;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest;
import io.quarkus.maven.ArtifactKey;

public class HibernateOrmPanacheKotlinCodestartTest {

@RegisterExtension
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
.codestarts("hibernate-orm")
.extension(new ArtifactKey("io.quarkus", "quarkus-jdbc-h2"))
.extension(new ArtifactKey("io.quarkus", "quarkus-hibernate-orm-panache-kotlin"))
.languages(KOTLIN)
.build();

@Test
void testContent() throws Throwable {
codestartTest.checkGeneratedSource("org.acme.MyKotlinEntity");
}

@Test
void buildAllProjectsForLocalUse() throws Throwable {
codestartTest.buildAllProjects();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.setField("field-1");
* entity1.field = "field-1";
* em.persist(entity1);
*
* List<MyEntity> entities = em.createQuery("from MyEntity", MyEntity.class).getResultList();
Expand All @@ -24,24 +24,9 @@
*/
@Entity
public class MyEntity {
private Long id;
private String field;

@Id
@GeneratedValue
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getField() {
return field;
}
public Long id;

public void setField(String field) {
this.field = field;
}
public String field;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package ilove.quark.us;

import io.quarkus.hibernate.orm.panache.PanacheEntity;
import javax.persistence.Entity;


/**
* Example JPA entity defined as a Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* .
*
* Usage (more example on the documentation)
*
* {@code
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* entity1.persist();
*
* List<MyEntity> entities = MyEntity.listAll();
* }
* }
*/
@Entity
public class MyEntity extends PanacheEntity {
public String field;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ilove.quark.us

import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* ```kotlin
* @Inject
* lateinit var em:EntityManager;
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* em.persist(entity1);
*
* val entities:List<MyKotlinEntity> = em.createQuery("from MyEntity", MyKotlinEntity::class.java).getResultList()
* }
* ```
*/
@Entity
class MyKotlinEntity {
@get:GeneratedValue
@get:Id
var id: Long? = null
var field: String? = null
}