• R/O
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revision2529 (tree)
Time2023-04-01 16:44:04
Authort_nakayama1971

Log Message

(empty log message)

Change Summary

Incremental Difference

--- trunk/framework/pjMw/src/main/java/common/db/dao/hibernate/BaseDao.java (revision 2528)
+++ trunk/framework/pjMw/src/main/java/common/db/dao/hibernate/BaseDao.java (revision 2529)
@@ -6,6 +6,7 @@
66 import java.sql.PreparedStatement;
77 import java.sql.SQLException;
88 import java.util.ArrayList;
9+import java.util.Arrays;
910 import java.util.List;
1011 import java.util.Map;
1112 import java.util.Objects;
@@ -24,9 +25,10 @@
2425 import org.hibernate.exception.ConstraintViolationException;
2526 import org.hibernate.exception.DataException;
2627 import org.hibernate.exception.LockAcquisitionException;
28+import org.hibernate.internal.util.collections.CollectionHelper;
2729 import org.hibernate.jdbc.Work;
2830 import org.hibernate.query.Query;
29-import org.hibernate.transform.Transformers;
31+import org.hibernate.query.TypedTupleTransformer;
3032
3133 import common.db.dao.Dao;
3234 import common.db.dao.DaoConstraintException;
@@ -610,9 +612,9 @@
610612 if (DaoUtil.isEntity(cls)) {
611613 qry.addEntity(cls);
612614 } else if (List.class.equals(cls)) {
613- qry.setTupleTransformer(Transformers.TO_LIST);
615+ qry.setTupleTransformer(ToListToupleTransformer.INSTANCE);
614616 } else if (Map.class.equals(cls) || !isJavaClass(cls)) {
615- qry.setTupleTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
617+ qry.setTupleTransformer(ToMapToupleTransformer.INSTANCE);
616618 }
617619
618620 for (var i = 0; i < qlist.size(); i++) {
@@ -731,4 +733,65 @@
731733 }
732734 }
733735 }
736+
737+ /**
738+ * ToListToupleTransformer
739+ *
740+ * @author Tadashi Nakayama
741+ */
742+ static class ToListToupleTransformer implements TypedTupleTransformer<List<Object>> {
743+
744+ /** インスタンス */
745+ public static final ToListToupleTransformer INSTANCE = new ToListToupleTransformer();
746+
747+ /**
748+ * {@inheritDoc}
749+ */
750+ @Override
751+ public Class<List<Object>> getTransformedType() {
752+ return Factory.cast(List.class);
753+ }
754+
755+ /**
756+ * {@inheritDoc}
757+ */
758+ @Override
759+ public List<Object> transformTuple(final Object[] tuple, final String[] aliases) {
760+ return Arrays.asList(tuple);
761+ }
762+ }
763+
764+ /**
765+ * ToMapToupleTransformer
766+ *
767+ * @author Tadashi Nakayama
768+ */
769+ static class ToMapToupleTransformer implements TypedTupleTransformer<Map<String, Object>> {
770+
771+ /** インスタンス */
772+ public static final ToMapToupleTransformer INSTANCE = new ToMapToupleTransformer();
773+
774+ /**
775+ * {@inheritDoc}
776+ */
777+ @Override
778+ public Class<Map<String, Object>> getTransformedType() {
779+ return Factory.cast(Map.class);
780+ }
781+
782+ /**
783+ * {@inheritDoc}
784+ */
785+ @Override
786+ public Map<String, Object> transformTuple(final Object[] tuple, final String[] aliases) {
787+ final Map<String, Object> result = CollectionHelper.mapOfSize(tuple.length);
788+ for (int i = 0; i < tuple.length && i < aliases.length; i++) {
789+ final String alias = aliases[i];
790+ if (alias != null) {
791+ result.put(alias, tuple[i]);
792+ }
793+ }
794+ return result;
795+ }
796+ }
734797 }