org.hibernate.type.AssociationType.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.type.AssociationType.java

Source

/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.type;

import java.util.Map;
import java.util.Set;

import org.hibernate.MappingException;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.persister.entity.Joinable;

/**
 * A type that represents some kind of association between entities.
 * @see org.hibernate.engine.internal.Cascade
 * @author Gavin King
 */
public interface AssociationType extends Type {

    /**
     * Get the foreign key directionality of this association
     */
    public ForeignKeyDirection getForeignKeyDirection();

    //TODO: move these to a new JoinableType abstract class,
    //extended by EntityType and PersistentCollectionType:

    /**
     * Is the primary key of the owning entity table
     * to be used in the join?
     */
    public boolean useLHSPrimaryKey();

    /**
     * Get the name of a property in the owning entity 
     * that provides the join key (null if the identifier)
     */
    public String getLHSPropertyName();

    /**
     * The name of a unique property of the associated entity 
     * that provides the join key (null if the identifier of
     * an entity, or key of a collection)
     */
    public String getRHSUniqueKeyPropertyName();

    /**
     * Get the "persister" for this association - a class or
     * collection persister
     */
    public Joinable getAssociatedJoinable(SessionFactoryImplementor factory) throws MappingException;

    /**
     * Get the entity name of the associated entity
     */
    public String getAssociatedEntityName(SessionFactoryImplementor factory) throws MappingException;

    /**
     * Get the "filtering" SQL fragment that is applied in the 
     * SQL on clause, in addition to the usual join condition
     */
    public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters)
            throws MappingException;

    /**
     * Get the "filtering" SQL fragment that is applied in the
     * SQL on clause, in addition to the usual join condition
     */
    public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters,
            Set<String> treatAsDeclarations);

    /**
     * Do we dirty check this association, even when there are
     * no columns to be updated?
     */
    public abstract boolean isAlwaysDirtyChecked();
}