diff --git a/lib/models/SimpleORMap.class.php b/lib/models/SimpleORMap.class.php
index 5c7e09592767e558d897241f9f1c0c740b932e33..3ff4cc083287d0c08a24f3cbf7ca6380e6272517 100644
--- a/lib/models/SimpleORMap.class.php
+++ b/lib/models/SimpleORMap.class.php
@@ -640,6 +640,7 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
         $ret = [];
         do  {
             $clone = clone $record;
+            $clone->setNew(false);
             $stmt->setFetchMode(PDO::FETCH_INTO, $clone);
 
             if ($clone = $stmt->fetch()) {
@@ -694,6 +695,7 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
         $ret = [];
         do {
             $clone = clone $record;
+            $clone->setNew(false);
             $st->setFetchMode(PDO::FETCH_INTO, $clone);
 
             if ($clone = $st->fetch()) {
@@ -719,10 +721,6 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
             $sql = "WHERE {$sql}";
         }
 
-        $class = get_called_class();
-        $record = new $class();
-        $record->setNew(false);
-
         $db_table = static::db_table();
         $st = DBManager::get()->prepare("SELECT `{$db_table}`.* FROM `{$db_table}` {$sql}");
         $st->execute($params);
@@ -735,6 +733,7 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
         $ret = 0;
         do {
             $clone = clone $record;
+            $clone->setNew(false);
             $st->setFetchMode(PDO::FETCH_INTO, $clone);
 
             if ($clone = $st->fetch()) {
@@ -1045,6 +1044,7 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
      */
     function __clone()
     {
+        $this->setNew(true);
         //all references link still to old object => reset all aliases
         foreach ($this->alias_fields() as $alias => $field) {
             if (isset($this->db_fields()[$field])) {