Open Source Repository

Home /hibernate/hibernate-3.2.7.ga | Repository Home



org/hibernate/mapping/ToOne.java
//$Id: ToOne.java 7246 2005-06-20 20:32:36Z oneovthafew $
package org.hibernate.mapping;

import org.hibernate.FetchMode;
import org.hibernate.MappingException;
import org.hibernate.engine.Mapping;
import org.hibernate.type.Type;
import org.hibernate.util.ReflectHelper;

/**
 * A simple-point association (ie. a reference to another entity).
 @author Gavin King
 */
public abstract class ToOne extends SimpleValue implements Fetchable {

  private FetchMode fetchMode;
  protected String referencedPropertyName;
  private String referencedEntityName;
  private boolean embedded;
  private boolean lazy = true;
  protected boolean unwrapProxy;

  protected ToOne(Table table) {
    super(table);
  }

  public FetchMode getFetchMode() {
    return fetchMode;
  }

  public void setFetchMode(FetchMode fetchMode) {
    this.fetchMode=fetchMode;
  }

  public abstract void createForeignKey() throws MappingException;
  public abstract Type getType() throws MappingException;

  public String getReferencedPropertyName() {
    return referencedPropertyName;
  }

  public void setReferencedPropertyName(String name) {
    referencedPropertyName = name==null null : name.intern();
  }

  public String getReferencedEntityName() {
    return referencedEntityName;
  }

  public void setReferencedEntityName(String referencedEntityName) {
    this.referencedEntityName = referencedEntityName==null 
        null : referencedEntityName.intern();
  }

  public void setTypeUsingReflection(String className, String propertyName)
  throws MappingException {
    if (referencedEntityName==null) {
      referencedEntityName = ReflectHelper.reflectedPropertyClass(className, propertyName).getName();
    }
  }

  public boolean isTypeSpecified() {
    return referencedEntityName!=null;
  }
  
  public Object accept(ValueVisitor visitor) {
    return visitor.accept(this);
  }
  
  public boolean isEmbedded() {
    return embedded;
  }
  
  public void setEmbedded(boolean embedded) {
    this.embedded = embedded;
  }

  public boolean isValid(Mapping mappingthrows MappingException {
    if (referencedEntityName==null) {
      throw new MappingException("association must specify the referenced entity");
    }
    return super.isValidmapping );
  }

  public boolean isLazy() {
    return lazy;
  }
  
  public void setLazy(boolean lazy) {
    this.lazy = lazy;
  }

  public boolean isUnwrapProxy() {
    return unwrapProxy;
  }

  public void setUnwrapProxy(boolean unwrapProxy) {
    this.unwrapProxy = unwrapProxy;
  }
  
}