= Domain type system (JPA/SQM) The JPA type system is an "unmapped" model, meaning that it has no mapping information - no references to tables, columns, etc. The base contract for Hibernate's extension to the JPA model is `org.hibernate.metamodel.model.domain.DomainType`. Hibernate's Semantic Query Model (SQM) is defined in terms of these JPA type extensions, through the `SqmExpressible` contract, allowing parts of the application's domain model to be used as part of an SQM tree. [plantuml,SqmTypeSystem,png] .Domain type system .... @startuml skinparam handwritten true interface DomainType interface SimpleDomainType interface BasicDomainType interface AnyMappingDomainType interface ManagedDomainType interface EmbeddableDomainType interface IdentifiableDomainType interface EntityDomainType interface MappedSuperclassDomainType interface SqmExpressible interface SqmPathSource interface PersistentAttribute interface SingularPersistentAttribute interface PluralPersistentAttribute DomainType <|-- SimpleDomainType SimpleDomainType <|-- BasicDomainType SimpleDomainType <|-- AnyMappingDomainType SimpleDomainType <|-- ManagedDomainType ManagedDomainType <|-- EmbeddableDomainType ManagedDomainType <|-- IdentifiableDomainType IdentifiableDomainType <|-- MappedSuperclassDomainType IdentifiableDomainType <|-- EntityDomainType SqmExpressible <|-- DomainType SqmExpressible <|-- SqmPathSource SqmPathSource <|-- EntityDomainType SqmPathSource <|-- PersistentAttribute PersistentAttribute <|-- SingularPersistentAttribute PersistentAttribute <|-- PluralPersistentAttribute @enduml ....