📄 distinctrootentityresulttransformer.java
字号:
//$Id: DistinctRootEntityResultTransformer.java 3890 2004-06-03 16:31:32Z steveebersole $package org.hibernate.transform;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author Gavin King */public class DistinctRootEntityResultTransformer implements ResultTransformer { private static final Logger log = LoggerFactory.getLogger(DistinctRootEntityResultTransformer.class); static final class Identity { final Object entity; Identity(Object entity) { this.entity = entity; } public boolean equals(Object other) { Identity that = (Identity) other; return entity==that.entity; } public int hashCode() { return System.identityHashCode(entity); } } public Object transformTuple(Object[] tuple, String[] aliases) { return tuple[ tuple.length-1 ]; } public List transformList(List list) { List result = new ArrayList( list.size() ); Set distinct = new HashSet(); for ( int i=0; i<list.size(); i++ ) { Object entity = list.get(i); if ( distinct.add( new Identity(entity) ) ) { result.add(entity); } } if ( log.isDebugEnabled() ) log.debug( "transformed: " + list.size() + " rows to: " + result.size() + " distinct results" ); return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -