{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "EntityDiscoveryMode" : {
      "type" : "string",
      "enum" : [ "PROJECT", "PROJECT_AND_REQUIRED", "LISTED_ONLY" ]
    },
    "ManagedClasses" : {
      "type" : "object",
      "properties" : {
        "Mode" : {
          "$ref" : "#/$defs/EntityDiscoveryMode",
          "description" : "Defines which entity classes are automatically included in this persistence unit.\nPROJECT: Only entity classes from the current project are automatically discovered and included.\nPROJECT_AND_REQUIRED: Entity classes from the current project and all required projects are automatically discovered and included.\nLISTED_ONLY: No automatic inclusion - only classes explicitly listed in the whitelist are included."
        },
        "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"
          }
        }
      },
      "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"
        },
        "hibernate.ejb.naming_strategy" : {
          "type" : "string",
          "description" : "Fully qualified class name of the Hibernate naming strategy implementation",
          "examples" : [ "org.hibernate.cfg.EJB3NamingStrategy" ]
        },
        "hibernate.enhancer.enableLazyInitialization" : {
          "type" : "boolean",
          "description" : "Whether Hibernate bytecode enhancement should enable lazy initialization without proxies",
          "default" : true
        }
      }
    },
    "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
    },
    "UnitsMap" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/PersistenceUnit"
      }
    }
  },
  "type" : "object",
  "properties" : {
    "Persistence" : {
      "$ref" : "#/$defs/UnitsMap"
    }
  },
  "additionalProperties" : false
}
