Les relations 1:n ne sont pas réellement plus compliquées que les relations 1:1.
Pour ce faire, nous allons partir d'un exemple simple et expliquer le déroulement des opérations l'une après l'autre.

Prennons le cas d'une personne qui possède une voiture. Une voiture est possédée par 1 et 1 seule personne, alors qu'une personne peut posseder 1 ou n voitures.

Notre classe voiture :

class Voiture extends neko.db.Object {
    public var id : Int;
    public var nom : String;
    public var id_proprietaire : Int;
    static var TABLE_NAME = "Voiture";
    static var TABLE_IDS = ["id"];

    static function RELATIONS(){ 
        return[{prop:"idU", key:"proprietaireId", manager:User.manager}];
    }

    public var proprietaireId : Int;
    public var idU(dynamic, dynamic):User;
}

Le manager de la voiture, qui possède une methode qui va récuperer la liste des voitures comportant l'identifiant du propriétaire passe en paramètre :

class VoitureManager extends neko.db.Manager< Voiture > {
    public function new() {
        super(Voiture);
    }

    public function listeVoiture(u:User):List< Voiture > {
        return objects("SELECT * FROM Voiture WHERE id_proprietaire="+u.id, false);
    }
}

Au tour du propriétaire. Celui-ci dispose d'un nom et d'un identifiant :

class User extends neko.db.Object {
    public var id : Int;
    public var nom : String;
    static var TABLE_NAME = "User";
    static var TABLE_IDS = ["id"];
    public static var manager = new neko.db.Manager(User);
}

Maintenant, pour que nous puissions avoir accès à sa liste de voiture, il nous suffit d'ajouter une methode qui va aller récuperer cette liste grâce à la méthode présente dans la classe Voiture :

public function listeVoiture():List< Voiture > {
    return Voiture.manager.listeVoiture(this);
}

Si maintenant, vous voulez récuperer la liste des voitures de la personne possedant l'identifiant 1 :

var p : User = User.manager.get(1);
trace(p.listeVoiture());