All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.exposed.dao.CompositeEntity.kt Maven / Gradle / Ivy

There is a newer version: 0.57.0
Show newest version
package org.jetbrains.exposed.dao

import org.jetbrains.exposed.dao.id.CompositeID
import org.jetbrains.exposed.dao.id.EntityID
import org.jetbrains.exposed.dao.id.IdTable

/** Base class for an [Entity] instance identified by an [id] comprised of multiple wrapped values. */
abstract class CompositeEntity(id: EntityID) : Entity(id)

/**
 * Base class representing the [EntityClass] that manages [CompositeEntity] instances and
 * maintains their relation to the provided [table].
 *
 * @param [table] The [IdTable] object that stores rows mapped to entities of this class.
 * @param [entityType] The expected [CompositeEntity] type. This can be left `null` if it is the class of type argument
 * [E] provided to this [CompositeEntityClass] instance. If this `CompositeEntityClass` is defined as a companion object
 * of a custom `CompositeEntity` class, the parameter will be set to this immediately enclosing class by default.
 * @sample org.jetbrains.exposed.sql.tests.shared.DDLTests.testDropTableFlushesCache
 * @param [entityCtor] The function invoked to instantiate a [CompositeEntity] using a provided [EntityID] value.
 * If a reference to a specific constructor or a custom function is not passed as an argument, reflection will be used
 * to determine the primary constructor of the associated entity class on first access. If this `CompositeEntityClass`
 * is defined as a companion object of a custom `CompositeEntity` class, the constructor will be set to that of the
 * immediately enclosing class by default.
 * @sample org.jetbrains.exposed.sql.tests.shared.entities.EntityTests.testExplicitEntityConstructor
 */
abstract class CompositeEntityClass(
    table: IdTable,
    entityType: Class? = null,
    entityCtor: ((EntityID) -> E)? = null
) : EntityClass(table, entityType, entityCtor)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy