J'ai 2 entités, par exemple voiture et moteur.Comment modéliser une relation bidirectionnelle One2One en utilisant greendao?
Chaque voiture a un moteur (au moins dans ce modèle :)), mais pas tous les moteurs est construit dans une voiture. Donc, je veux le tableau suivant structure: (. Bien sûr, il y a des colonnes beaucoup plus En fait, j'ai deux entités avec environ 15 colonnes chacune Mais nous allons rester simple..)
+------------------------------------+
|CAR |
+------------------------------------+
|id_car INTEGER,PK,AUTOINCREMENT |
|id_engine INTEGER,FK |
+------------------------------------+
+------------------------------------+
|ENGINE |
+------------------------------------+
|id_engine INTEGER,PK,AUTOINCREMENT |
+------------------------------------+
Cela peut modélisable comme ceci:
engine = schema.addEntity("Engine");
Property pkEngine = engine.addLongProperty("id_engine").primaryKey().autoincrement().getProperty();
car = schema.addEntity("Car");
car.addLongProperty("id_car").primaryKey().autoincrement();
Property fkEngine = car.addLongProperty("id_engine").getProperty();
car.addToOne(engine, fkEngine);
Mais je veux être en mesure d'interroger la voiture du moteur et de moteur de voiture, avec getters sur les eNTITÉ-objets. avoisinant I ajouté:
engine.addToOneWithoutProperty("Car", car, "id_car");
J'ai alors tous les getters que je veux, mais mes tables ressembler à ceci:
+------------------------------------+
|CAR |
+------------------------------------+
|id_car INTEGER,PK,AUTOINCREMENT |
|id_engine INTEGER,FK |
+------------------------------------+
+------------------------------------+
|ENGINE |
+------------------------------------+
|id_engine INTEGER,PK,AUTOINCREMENT |
|id_car INTEGER |
+------------------------------------+
Si j'utilise les pour insérer statments suivant les colonnes fk-sont inconsisent, comme CAR.id_engine is NULL
, qui fournit des exceptions en utilisant le getter engine.getCar()
.
Engine engine = new Engine();
mEngineDao.insert(engine);
Car car = new Car();
car.setEngine(engine);
engine.setCar(car);
mCarDao.insert(car);
engine.update();
Quelqu'un at-il des suggestions comment construire un One2One-Relation à l'aide greendao, de sorte qu'il n'y a qu'une seule colonne de clé étrangère et getters dans chaque entité?
--- MISE À JOUR ---
Il semble que addToOneWithoutProperty() ne fonctionne pas correctement. Je ne peux pas trouver une section dans le void bindValues(SQLiteStatement stmt, Car entity)
généré qui se soucie de la colonne id_engine
.
Je n'ai pas demandé Many2Many-relations. (J'ai déjà modélisé certains éléments, bien que les touches composites ne soient pas supportées pour le moment.) Ma question est de savoir comment modéliser One2One. S'il vous plaît ne pas supprimer cette réponse, puisque j'ai déjà commenté une réponse similaire et je ne veux pas le faire à nouveau :) – AlexS