package jef.database.query;
import jef.database.MetadataContainer;
/**
* 可绑定的Field
* 早绑定(显式绑定,即开发人员编程时就指定该Field或表达式与某个特定查询绑定)
* 迟绑定 (隐式绑定,编程时仅指定要绑定的表类型,在执行查询时在所有的参与表中选择相同的表绑定。 这种隐式绑定不能处理同一个表在一个查询中出现多次的情况)
*
* @author jiyi
*
*/
public interface LazyQueryBindField extends MetadataContainer{
/**
* 该Field是否绑定
* @return
*/
public boolean isBind();
// /**
// * 绑定的表的元数据,所谓的迟绑定,其实就是根据MetaData去比对,参与Join的几张表中,哪张表metadata一致。
// * @return
// */
// public ITableMetadata getMeta();
/**
* 得到绑定的实例。如果是已经绑定的Field,直接返回绑定对象即可。如果是没有绑定的Field,从传入的context中选择合适的表绑定
* @param context Join上下文
* @return
*/
public Query<?> getInstanceQuery(AbstractEntityMappingProvider context);
/**
* 显式的绑定到某个特性的查询表上
* @param query
*/
public void setBind(Query<?> query);
}