@@ -21,11 +21,16 @@ public static <T extends Model> Map<String, Object> map(Repo<T> repo, T entity){
2121 return values ;
2222 }
2323
24- public static <T extends Model > List <T > map (Repo <T > repo , ResultSet rs ){
24+ public static <T extends Model > List <T > map (Repo <T > repo , ResultSet rs , List < Class <? extends Model >> joinedModels ){
2525 List <T > list = new ArrayList <>();
2626 try {
2727 while (rs .next ()){
2828 T t = (T ) repo .getInfo ().getModelConstructor ().newInstance ();
29+ for (Class <? extends Model > model : joinedModels ){
30+ Repo <Model > r = Repo .get ((Class <Model >) model );
31+ Model o = (Model ) r .getInfo ().getModelConstructor ().newInstance ();
32+ t .internalAddJoinedModel (model , mapBack (r , rs , o ));
33+ }
2934 list .add (mapBack (repo , rs , t ));
3035 }
3136 }catch (SQLException | InstantiationException | IllegalAccessException | InvocationTargetException ex ){
@@ -36,8 +41,9 @@ public static <T extends Model> List<T> map(Repo<T> repo, ResultSet rs){
3641
3742 public static <T extends Model > T mapBack (Repo <T > repo , ResultSet rs , T t ){
3843 t .setEntryExists (true );
39- for (String fieldName : repo .getInfo ().getFields ())
40- setValue (repo , fieldName , t , getValue (rs , repo .getInfo ().getType (fieldName ).getJavaType (), repo .getInfo ().getColumnName (fieldName )));
44+ for (String fieldName : repo .getInfo ().getFields ()){
45+ setValue (repo , fieldName , t , getValue (rs , repo .getInfo ().getType (fieldName ).getJavaType (), repo .getInfo ().getTableName (), repo .getInfo ().getColumnName (fieldName )));
46+ }
4147 return t ;
4248 }
4349
@@ -59,8 +65,18 @@ private static <T extends Model> Object getValue(Repo<T> repo, String fieldName,
5965 }
6066 }
6167
62- private static Object getValue (ResultSet rs , Class <?> sqlType , String columnName ) {
68+ private static Object getValue (ResultSet rs , Class <?> sqlType , String tableName , String columnName ) {
6369 try {
70+ try {
71+ rs .findColumn (columnName );
72+ }catch (SQLException ex ){
73+ columnName = tableName + "." + columnName ;
74+ }
75+ try {
76+ rs .findColumn (columnName );
77+ }catch (SQLException ex ){
78+ return null ;
79+ }
6480 if (sqlType .equals (String .class ))
6581 return rs .getString (columnName );
6682 if (sqlType .equals (Integer .class ))
0 commit comments