{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "ManagedClasses" : {
      "type" : "object",
      "properties" : {
        "Classes" : {
          "description" : "Whitelist of Entity classes to store in this persistence unit. If empty, all EntityClasses of the local project are stored.",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "ExcludeUnlisted" : {
          "type" : "boolean",
          "description" : "If enabled, only whitelisted 'Classes' will be stored in this persistence unit."
        }
      },
      "additionalProperties" : false
    },
    "PersistenceProperties" : {
      "type" : "object",
      "additionalProperties" : {
        "type" : "string"
      },
      "properties" : {
        "hibernate.hbm2ddl.auto" : {
          "type" : "string",
          "description" : "Controls the Hibernate database schema generation process",
          "default" : "none",
          "examples" : [ "none", "create", "create-drop", "validate", "update" ]
        },
        "hibernate.id.new_generator_mappings" : {
          "type" : "boolean",
          "description" : "Whether to use new IdentifierGenerator implementations that follow the JPA 2.0 specification",
          "default" : true
        },
        "hibernate.enable_lazy_load_no_trans" : {
          "type" : "boolean",
          "description" : "Whether to allow lazy loading outside of a transaction",
          "default" : false
        },
        "hibernate.dialect" : {
          "type" : "string",
          "description" : "Fully qualified class name of the Hibernate Dialect to use for database interactions",
          "examples" : [ "org.hibernate.dialect.HSQLDialect", "org.hibernate.dialect.SQLServerDialect" ]
        },
        "hibernate.dialect.disabled" : {
          "type" : "string",
          "description" : "Comma-separated list of dialects to disable auto-detection for",
          "examples" : [ "org.hibernate.dialect.HSQLDialect", "org.hibernate.dialect.SQLServerDialect" ]
        },
        "hibernate.default_schema" : {
          "type" : "string",
          "description" : "Default database schema to use for unqualified table names",
          "examples" : [ "dbo" ]
        },
        "hibernate.metadata_builder_contributor" : {
          "type" : "string",
          "description" : "Fully qualified class name of a MetadataBuilderContributor implementation to customize the Hibernate MetadataBuilder",
          "examples" : [ "com.acme.project.MyContrib" ]
        },
        "hibernate.show_sql" : {
          "type" : "boolean",
          "description" : "Whether to log generated SQL statements"
        },
        "hibernate.format_sql" : {
          "type" : "boolean",
          "description" : "Whether to format SQL statements in the log"
        }
      }
    },
    "PersistenceUnit" : {
      "type" : "object",
      "properties" : {
        "DataSource" : {
          "type" : "string",
          "description" : "Name of a Database that stores managed entities of this unit"
        },
        "Managed" : {
          "$ref" : "#/$defs/ManagedClasses"
        },
        "Properties" : {
          "$ref" : "#/$defs/PersistenceProperties"
        }
      },
      "required" : [ "DataSource" ],
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "Persistence" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/PersistenceUnit"
      }
    }
  },
  "additionalProperties" : false
}
