package jef.database.meta; import jef.database.ORMConfig; import jef.database.dialect.DatabaseDialect; import jef.database.dialect.type.ColumnMapping; import jef.tools.reflect.Property; public final class ReferenceObject extends AbstractRefField implements IReferenceAllTable{ /** * 是否延迟加载Lob字段 */ private boolean lazyLob; public ReferenceObject(Property fName, Reference ref,CascadeConfig config) { super(fName, ref,config); lazyLob=ORMConfig.getInstance().isEnableLazyLob() && this.reference.getTargetType().getLobFieldNames()!=null; } public boolean isSingleColumn() { return false; } public ITableMetadata getFullModeTargetType() { return this.getReference().getTargetType(); } public String simpleModeSql(String tableAlias) { return null; } public String getSelectedAliasOf(ColumnMapping f, DatabaseDialect dialect, String schema) { return AliasProvider.DEFAULT.getSelectedAliasOf(f, dialect, schema); } @Override public String getResultAliasOf(ColumnMapping f, String schema) { return AliasProvider.DEFAULT.getResultAliasOf(f, schema); } public boolean isLazyLob() { return lazyLob; } @Override public ISelectProvider toNestedDesc(String lastName) { if(lastName==null){ return this; } return new NestedReferenceObject(lastName.concat(".").concat(getName())); } private class NestedReferenceObject implements IReferenceAllTable{ String name; public NestedReferenceObject(String newName) { this.name=newName; } public String getName() { return name; } public int getProjection() { return 0; } public boolean isSingleColumn() { return false; } public ITableMetadata getFullModeTargetType() { return ReferenceObject.this.getFullModeTargetType(); } public String simpleModeSql(String tableAlias) { return null; } public String getSelectedAliasOf(ColumnMapping f, DatabaseDialect dialect, String schema) { return AliasProvider.DEFAULT.getSelectedAliasOf(f, dialect, schema); } @Override public String getResultAliasOf(ColumnMapping f, String schema) { return AliasProvider.DEFAULT.getResultAliasOf(f, schema); } public boolean isLazyLob() { return lazyLob; } } }