Interface PersistentEntity

All Superinterfaces:
io.micronaut.core.annotation.AnnotationMetadataProvider, io.micronaut.core.annotation.AnnotationSource, io.micronaut.core.naming.Named, PersistentElement
All Known Implementing Classes:
AbstractPersistentEntity, RuntimePersistentEntity, SourcePersistentEntity

public interface PersistentEntity extends PersistentElement
Models a persistent entity and provides an API that can be used both within the compiler and at runtime. The AnnotationMetadata provided is consistent both at runtime and compilation time.
Since:
1.0
Author:
Graeme Rocher
See Also:
  • Method Details

    • getName

      @NonNull @NonNull String getName()
      The entity name including any package prefix.
      Specified by:
      getName in interface io.micronaut.core.naming.Named
      Returns:
      The entity name
    • getAliasName

      @NonNull @NonNull String getAliasName()
      Returns:
      A name to use when referring to this element via an alias.
    • hasCompositeIdentity

      default boolean hasCompositeIdentity()
      Has composite identity.
      Returns:
      The true if composite identity present
    • hasIdentity

      default boolean hasIdentity()
      Has identity.
      Returns:
      The true if identity present
    • getCompositeIdentity

      @Nullable @Nullable PersistentProperty[] getCompositeIdentity()
      The composite id.
      Returns:
      The composite id or null if there isn't one
    • getIdentity

      @Nullable @Nullable PersistentProperty getIdentity()
      Returns the identity of the instance.
      Returns:
      The identity or null if there isn't one
    • getVersion

      @Nullable @Nullable PersistentProperty getVersion()
      Returns the version property.
      Returns:
      the property
    • isVersioned

      default boolean isVersioned()
      Is the entity versioned for optimistic locking.
      Returns:
      true if versioned
    • getPersistentProperties

      @NonNull @NonNull Collection<? extends PersistentProperty> getPersistentProperties()
      A list of properties to be persisted.
      Returns:
      A list of PersistentProperty instances
    • getAssociations

      @NonNull default @NonNull Collection<? extends Association> getAssociations()
      A list of the associations for this entity. This is typically a subset of the list returned by getPersistentProperties()
      Returns:
      A list of associations
    • getEmbedded

      @NonNull default @NonNull Collection<Embedded> getEmbedded()
      A list of embedded associations for this entity. This is typically a subset of the list returned by getPersistentProperties()
      Returns:
      A list of associations
    • getPropertyByName

      @Nullable @Nullable PersistentProperty getPropertyByName(String name)
      Obtains a PersistentProperty instance by name.
      Parameters:
      name - The name of the property
      Returns:
      The PersistentProperty or null if it doesn't exist
    • getIdentityByName

      @Nullable default @Nullable PersistentProperty getIdentityByName(String name)
      Obtains an identity PersistentProperty instance by name.
      Parameters:
      name - The name of the identity property
      Returns:
      The PersistentProperty or null if it doesn't exist
    • getPersistentPropertyNames

      @NonNull @NonNull Collection<String> getPersistentPropertyNames()
      A list of property names that a persistent.
      Returns:
      A List of strings
    • isEmbeddable

      default boolean isEmbeddable()
      Returns:
      Is the entity embeddable.
    • getSimpleName

      @NonNull default @NonNull String getSimpleName()
      Returns:
      The simple name without the package of entity
    • getDecapitalizedName

      @NonNull default @NonNull String getDecapitalizedName()
      Returns:
      Returns the name of the class decapitalized form
    • isOwningEntity

      boolean isOwningEntity(PersistentEntity owner)
      Returns whether the specified entity asserts ownership over this entity.
      Parameters:
      owner - The owning entity
      Returns:
      True if it does own this entity
    • getParentEntity

      @Nullable @Nullable PersistentEntity getParentEntity()
      Returns the parent entity of this entity.
      Returns:
      The ParentEntity instance
    • getPath

      default Optional<String> getPath(String camelCasePath)
      Computes a dot separated property path for the given camel case path.
      Parameters:
      camelCasePath - The camel case path
      Returns:
      The dot separated version or null if it cannot be computed
    • getRootEntity

      @NonNull default @NonNull PersistentEntity getRootEntity()
      Obtains the root entity of an inheritance hierarchy.
      Returns:
      The root entity
    • isRoot

      default boolean isRoot()
      Whether this entity is a root entity.
      Returns:
      True if it is a root entity
    • getPropertyByPath

      default Optional<PersistentProperty> getPropertyByPath(String path)
      Return a property for a dot separated property path such as foo.bar.prop .
      Parameters:
      path - The path
      Returns:
      The property
    • getPropertyPath

      @Nullable default @Nullable PersistentPropertyPath getPropertyPath(@NonNull @NonNull String path)
      Return a PersistentPropertyPath by path such as foo.bar.prop. .
      Parameters:
      path - The path
      Returns:
      The properties
    • getPropertyPath

      @Nullable default @Nullable PersistentPropertyPath getPropertyPath(@NonNull @NonNull String[] propertyPath)
      Return a PersistentPropertyPath by path such as foo.bar.prop. .
      Parameters:
      propertyPath - The path
      Returns:
      The properties
    • getNamingStrategy

      @NonNull @NonNull NamingStrategy getNamingStrategy()
      Obtain the naming strategy for the entity.
      Returns:
      The naming strategy
    • findNamingStrategy

      @NonNull @NonNull Optional<NamingStrategy> findNamingStrategy()
      Find the naming strategy that is defined for the entity.
      Returns:
      The optional naming strategy
    • of

      @NonNull static <T> @NonNull RuntimePersistentEntity<T> of(@NonNull @NonNull Class<T> type)
      Creates a new persistent entity representation of the given type. The type must be annotated with Introspected. This method will create a new instance on demand and does not cache.
      Type Parameters:
      T - The generic type
      Parameters:
      type - The type
      Returns:
      The entity
    • of

      @NonNull static <T> @NonNull RuntimePersistentEntity<T> of(@NonNull @NonNull io.micronaut.core.beans.BeanIntrospection<T> introspection)
      Creates a new persistent entity representation of the given type. The type must be annotated with Introspected. This method will create a new instance on demand and does not cache.
      Type Parameters:
      T - The generic type
      Parameters:
      introspection - The introspection
      Returns:
      The entity