📄 sqlgeneratedentityaliases.java
字号:
/* * Created on 15-Mar-2005 * */package org.hibernate.loader;import java.util.Map;import org.hibernate.persister.entity.Loadable;import org.hibernate.persister.entity.SQLLoadable;/** * Describes the SQL result set column aliases for a * select clause generated by an entity persister or overridden by propertyresults in a * named query. * * @author Max Rydahl Andersen, */public class SQLGeneratedEntityAliases implements EntityAliases { private /*final*/ String[] suffixedKeyColumns; private final String[] suffixedVersionColumn; private final String[][] suffixedPropertyColumns; private final String suffixedDiscriminatorColumn; private final String suffix; private final String rowIdAlias; private Map propertyResults; /** * Calculate and cache select-clause suffixes. * @param map */ public SQLGeneratedEntityAliases(Map propertyResults, SQLLoadable persister, String suffix) { this.suffix = suffix; this.propertyResults = propertyResults; suffixedKeyColumns = get(persister.getIdentifierPropertyName(), (String[])null); if(suffixedKeyColumns==null) { suffixedKeyColumns = get("id", persister.getIdentifierAliases(suffix)); } intern(suffixedKeyColumns); suffixedPropertyColumns = getSuffixedPropertyAliases(persister); suffixedDiscriminatorColumn = get("class", persister.getDiscriminatorAlias(suffix)); if ( persister.isVersioned() ) { suffixedVersionColumn = suffixedPropertyColumns[ persister.getVersionProperty() ]; } else { suffixedVersionColumn = null; } rowIdAlias = Loadable.ROWID_ALIAS + suffix; // TODO: not visible to the user! } private String[] get(String propertyPath, String[] aliases) { String[] columns = (String[]) propertyResults.get(propertyPath); if(columns==null) { return aliases; } else { return columns; } } private String get(String propertyPath, String alias) { String[] columns = (String[]) propertyResults.get(propertyPath); if(columns==null) { return alias; } else { return columns[0]; } } public String[][] getSuffixedPropertyAliases(Loadable persister) { int size = persister.getPropertyNames().length; String[][] suffixedPropertyAliases = new String[size][]; for ( int j = 0; j < size; j++ ) { suffixedPropertyAliases[j] = get(persister.getPropertyNames()[j],persister.getPropertyAliases(suffix, j)); intern( suffixedPropertyAliases[j] ); } return suffixedPropertyAliases; } public String[] getSuffixedVersionAliases() { return suffixedVersionColumn; } public String[][] getSuffixedPropertyAliases() { return suffixedPropertyColumns; } public String getSuffixedDiscriminatorAlias() { return suffixedDiscriminatorColumn; } public String[] getSuffixedKeyAliases() { return suffixedKeyColumns; } public String getRowIdAlias() { return rowIdAlias; } private static void intern(String[] strings) { for (int i=0; i<strings.length; i++ ) { strings[i] = strings[i].intern(); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -