2010-08-03 16 views
0

J'ai une classe que je veux persister avec OrmLite et il stocke la plupart de ses données dans une HashMap. Je veux mapper ces champs à la table dans Sqlite, laissant ceux absent sur la carte comme null. Est-il possible de remplacer les méthodes pour enregistrer un enregistrement dans la base de données avec des implémentations personnalisées à l'aide d'OrmLite?Est-il possible d'écrire du code SQL personnalisé dans OrmLite?

+0

Cette carte est-elle censée être une collection de lignes SQL dans une table? Par exemple, si vous avez 100 éléments dans la carte, auriez-vous 100 lignes dans une table SQL? – Gray

+0

@Gray, no. Dites qu'il y a 'column1',' column2', 'column3' dans la table. Le 'Map 'foo', 'column3' => 'bar'. Alors la ligne résultante serait 1 => null, 2 => foo, 3 => bar. De toute façon, je suis passé à Hibernate, donc cette question n'est pas pertinente. – Fluffy

+0

Je suis l'auteur d'OrmLite et je suis simplement curieux de savoir s'il manque des fonctionnalités que je devrais envisager d'ajouter. Donc l'idée est que la carte stocke une rangée. La clé String est le nom de la colonne et la valeur Object est ses données associées? Mais vous pourriez utiliser un objet au lieu d'une carte, non? Appelez setColumn2 ("foo") et setColumn3 ("bar"). N'est-ce pas une façon plus Java de le faire? – Gray

Répondre

0

Je pense que roddik a évolué mais je pensais que je posterais une réponse de toute façon en tant qu'auteur d'OrmLite.

Ma réponse générale est qu'il serait préférable de créer un objet pour stocker les colonnes au lieu d'une carte. Bien que SQL soit une rangée de colonnes de chaînes, le but d'ORM est de traiter les lignes comme des objets en Java au lieu d'une Map of strings.

@DatabaseTable 
public void RandomThing { 
    @DatabaseField 
    String column1; 
    @DatabaseField 
    String column2; 
    @DatabaseField 
    String column3; 
    public void RandomThing(String column1, String column2, String column3) { 
     ... 
    } 
} 

Actuellement, il n'existe aucun moyen de conserver une carte de chaînes dans ORMLite.