diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index 3d30afa65c4b330b12094aa11fbf00e2a6e13d06..8e8d37b9f5dd207dadf7d6ea11d458646bb8db86 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -58,45 +58,36 @@ public class ModelsApi {
             @ApiParam(value = "Only ask published models") @RequestParam(value = "valid", required = false) Boolean valid
     )  {
 
-        /*User user = mipApplication.getUser();
+        User user = mipApplication.getUser();
+        Iterable<Model> models = null;
 
-        String queryString = "SELECT m FROM Model m, User u WHERE m.createdBy=u.username";
-        if(valid != null && valid)
-        {
-            queryString += " AND m.valid= :valid";
-        }
         if(own != null && own)
         {
-            queryString += " AND u.username= :username";
+            modelRepository.findByCreatedByOrderByCreatedAt(user);
         }
         else
         {
-            queryString += " AND (m.valid=true or u.username= :username)";
+            modelRepository.findByValidOrCreatedByOrderByCreatedAt(true, user);
         }
 
-        queryString += " ORDER BY m.createdAt DESC";
-
-        List<Model> models = new LinkedList<>();
-        Query query = session.createQuery(queryString);
-        if(valid != null)
-        {
-            query.setBoolean("valid", valid);
-        }
-        query.setString("username", user.getUsername());
-        if(limit != null)
+        if(valid != null && models != null)
         {
-            query.setMaxResults(limit);  // Pagination : Use query.setFirstResult(...) to set begining index
+            for (Iterator<Model> i = models.iterator(); i.hasNext(); )
+            {
+                Model m = i.next();
+                if(valid != m.getValid())
+                {
+                    i.remove();
+                }
+            }
         }
-        models = query.list();
-
 
         for(Model model:models){
             model.setDataset(datasetRepository.findOne(model.getDataset().getCode()));
         }
 
-        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);*/
+        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);
 
-        return new ResponseEntity<>(HttpStatus.OK).ok(modelRepository.findAll());
     }
 
 
diff --git a/src/main/java/org/hbp/mip/repositories/ModelRepository.java b/src/main/java/org/hbp/mip/repositories/ModelRepository.java
index 5718dfe4c88393289f49e2621b2c00d29f200ae7..9da1df5bd11936471fde140ce86b60689c5a499c 100644
--- a/src/main/java/org/hbp/mip/repositories/ModelRepository.java
+++ b/src/main/java/org/hbp/mip/repositories/ModelRepository.java
@@ -1,6 +1,7 @@
 package org.hbp.mip.repositories;
 
 import org.hbp.mip.model.Model;
+import org.hbp.mip.model.User;
 import org.springframework.data.repository.CrudRepository;
 
 /**
@@ -9,4 +10,6 @@ import org.springframework.data.repository.CrudRepository;
 
 public interface ModelRepository extends CrudRepository<Model, String> {
     Long countByTitle(String Title);
+    Iterable<Model> findByCreatedByOrderByCreatedAt(User user);
+    Iterable<Model> findByValidOrCreatedByOrderByCreatedAt(Boolean valid, User user);
 }