package org.nutz.dao.entity; import org.nutz.dao.Condition; import org.nutz.dao.sql.PojoCallback; /** * 这个接口封装了不同映射关系行为的不同 * * @author zozoh(zozohtnt@gmail.com) */ public interface LinkField extends EntityField { /** * @return 映射的类型 */ LinkType getLinkType(); /** * @return 对应的宿主字段 */ MappingField getHostField(); /** * @return 对应的映射实体的被映射字段 */ MappingField getLinkedField(); /** * 根据给定的宿主对象,以及自身记录的映射关系,生成一个获取映射对象的约束条件 * <ul> * <li>`@One` 根据宿主对象引用字段值生成映射对象的条件语句</li> * <li>`@Many` 根据宿主对象主键值生成映射对象的条件语句</li> * <li>`@ManyMany` 根据宿主对象以及映射表生成映射对象的条件语句</li> * </ul> * * @param host * 宿主对象 * * @return POJO 语句的条件元素 */ Condition createCondition(Object host); /** * @return 执行查询的回调 */ PojoCallback getCallback(); /** * 用宿主对象的字段更新映射对象 * * @param obj * 宿主对象 * @param linked * 被映射的对象 */ void updateLinkedField(Object obj, Object linked); /** * 用映射对象的字段更新宿主对象 * * @param obj * 宿主对象 * @param linked * 被映射的对象 */ void saveLinkedField(Object obj, Object linked); /** * @return 链接的目标实体 */ Entity<?> getLinkedEntity(); /** * @return 打印映射信息 */ String toString(); }