diff --git a/extensions/hibernate-orm/deployment/src/main/resources/dev-ui/hibernate-orm-persistence-units.js b/extensions/hibernate-orm/deployment/src/main/resources/dev-ui/hibernate-orm-persistence-units.js
index 63781ff8220da..f28762193739a 100644
--- a/extensions/hibernate-orm/deployment/src/main/resources/dev-ui/hibernate-orm-persistence-units.js
+++ b/extensions/hibernate-orm/deployment/src/main/resources/dev-ui/hibernate-orm-persistence-units.js
@@ -83,6 +83,21 @@ export class HibernateOrmPersistenceUnitsComponent extends LitElement {
${pu.createDDL}
+
+
+
+ Update Script
+ this._copyToClipboard(e, 'Update Script')}"
+ theme="small">
+
+ Copy
+
+
+
+ ${pu.updateDDL}
+
{
+
+ private final Action action;
+ private final Metadata metadata;
+ private final ServiceRegistry serviceRegistry;
+ private final String importFile;
+
+ DDLSupplier(Action action, Metadata metadata, ServiceRegistry serviceRegistry, String importFile) {
+ this.action = action;
+ this.metadata = metadata;
+ this.serviceRegistry = serviceRegistry;
+ this.importFile = importFile;
+ }
+
+ @Override
+ public String get() {
+ return generateDDL(action, metadata, serviceRegistry, importFile);
+ }
}
void clearData() {
@@ -131,8 +154,11 @@ public void accept(String command) {
SchemaDropper schemaDropper = tool.getSchemaDropper(executionOptions.getConfigurationValues());
schemaDropper.doDrop(metadata, executionOptions, ContributableMatcher.ALL, source, target);
} else if (action == Action.CREATE) {
- SchemaCreator schemaDropper = tool.getSchemaCreator(executionOptions.getConfigurationValues());
- schemaDropper.doCreation(metadata, executionOptions, ContributableMatcher.ALL, source, target);
+ SchemaCreator schemaCreator = tool.getSchemaCreator(executionOptions.getConfigurationValues());
+ schemaCreator.doCreation(metadata, executionOptions, ContributableMatcher.ALL, source, target);
+ } else if (action == Action.UPDATE) {
+ SchemaMigrator schemaMigrator = tool.getSchemaMigrator(executionOptions.getConfigurationValues());
+ schemaMigrator.doMigration(metadata, executionOptions, ContributableMatcher.ALL, target);
}
return writer.toString();
} catch (RuntimeException e) {
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/dev/HibernateOrmDevInfo.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/dev/HibernateOrmDevInfo.java
index e51e25916b76d..02a05e4f67d1c 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/dev/HibernateOrmDevInfo.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/dev/HibernateOrmDevInfo.java
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+import java.util.function.Supplier;
import org.hibernate.LockOptions;
import org.hibernate.boot.query.NamedHqlQueryDefinition;
@@ -44,18 +45,24 @@ public static class PersistenceUnit {
private final List managedEntities;
private final List namedQueries;
private final List namedNativeQueries;
- private final String createDDL;
- private final String dropDDL;
+ private String createDDL;
+ private String dropDDL;
+ private String updateDDL;
+ private final Supplier createDDLSupplier;
+ private final Supplier dropDDLSupplier;
+ private final Supplier updateDDLSupplier;
public PersistenceUnit(String name, List managedEntities,
List namedQueries,
- List namedNativeQueries, String createDDL, String dropDDL) {
+ List namedNativeQueries, Supplier createDDL, Supplier dropDDL,
+ Supplier updateDDLSupplier) {
this.name = name;
this.managedEntities = managedEntities;
this.namedQueries = namedQueries;
this.namedNativeQueries = namedNativeQueries;
- this.createDDL = createDDL;
- this.dropDDL = dropDDL;
+ this.createDDLSupplier = createDDL;
+ this.dropDDLSupplier = dropDDL;
+ this.updateDDLSupplier = updateDDLSupplier;
}
public String getName() {
@@ -81,14 +88,27 @@ public List getAllNamedQueries() {
return allQueries;
}
- public String getCreateDDL() {
+ public synchronized String getCreateDDL() {
+ if (createDDL == null) {
+ createDDL = createDDLSupplier.get();
+ }
return createDDL;
}
- public String getDropDDL() {
+ public synchronized String getDropDDL() {
+ if (dropDDL == null) {
+ dropDDL = dropDDLSupplier.get();
+ }
return dropDDL;
}
+ public synchronized String getUpdateDDL() {
+ if (updateDDL == null) {
+ updateDDL = updateDDLSupplier.get();
+ }
+ return updateDDL;
+ }
+
}
public static class Entity {