在hibernate使用的過程中,我們通常需要對結果進行解釋。Hibernate為我們提供了以下3種查詢結果解釋方法:
- Transformers.ALIAS_TO_ENTITY_MAP //把輸出結果轉換成map
- Transformers.TO_LIST //把結果按順序排進List
- Transformers.aliasToBean(target) //把結果通過setter方法注入到指定的對像屬性中
在Hibernate中Transformers的所有轉換都是需要實現ResultTransformer接口。
① ALIAS_TO_ENTITY_MAP :太簡單了就是把key和value直接轉換到Map當中 :
- /**
- * {@inheritDoc}
- */
- // aliases key
- // tuple value
- public Object transformTuple(Object[] tuple, String[] aliases) {
- Map result = new HashMap(tuple.length);
- for ( int i=0; i<tuple.length; i++ ) {
- String alias = aliases[i];
- if ( alias!=null ) {
- result.put( alias, tuple[i] );
- }
- }
- return result;
- }
② TO_LIST:轉換過程很簡單,就是把value轉換成List對像:
- public Object transformTuple(Object[] tuple, String[] aliases) {
- return Arrays.asList( tuple );
- }
③ aliasToBean:轉換過程就是通過讀取查詢后的字段,然后通過使用setter方法注入到目標對像中 :
- getSession().beginTransaction();
- Query query = getSession().createSQLQuery("select * from operation");
- list =query.setResultTransformer(Transformers.aliasToBean(Operation.class)).list();
- getSession().getTransaction().commit();