ormlite android ejemplo
¿Cuál es la mejor manera de implementar relaciones de muchos a muchos usando ORMLite? (3)
Debe crear una clase ProductPurchase y administrarla como si fuera otro objeto que debe ingresar a su base de datos.
Puede (pero no tiene que) tener una Colección de Productos dentro de Compras (y viceversa) pero tendrá que actualizarse / crearse manualmente cuando cargue las relaciones entre Productos y Compras de la tabla de vinculadores ProductPurchase. Tener esas colecciones no significa nada para el ORM (no las anotará ni las anotará).
Si alguien está buscando una aplicación de Android con la relación Many-to-Many, trabajé en un ejemplo: https://github.com/arthurrauter/ormlite-android
Actualmente estoy jugando con ORMlite para hacer un modelo con tablas y relaciones. Una relación es una relación de muchos a muchos. ¿Cuál es la mejor manera de implementar eso?
Para ser más concretos:
Digamos que tengo estas dos mesas
Product
id
brand
Purchase
id
Una compra puede tener varios productos y uno puede estar en varias compras. Usando ORMLite podría tener un @ForeignCollectionField
en cada modelo, pero no creo que funcione. La única solución válida que veo es hacer una tercera compra Product_Purchase para vincular Product and Purchase con relaciones de varios a uno.
¿Qué piensan ustedes?
La respuesta de @ Romain es correcta, pero aquí hay más información para la posteridad. Como él menciona, hay un ejemplo de proyecto ORMLite muchos a muchos que demuestra la mejor manera de hacer esto:
El ejemplo utiliza una tabla de unión con los ID de ambos objetos para almacenar una relación. En la pregunta de @Romain, el objeto de unión tendría tanto el Product
como el objeto de Purchase
. Algo como:
public class ProductPurchase {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(foreign = true)
private Product product;
@DatabaseField(foreign = true)
private Purchase purchase;
...
}
Los campos de identificación se extraen de los objetos que crean una tabla como:
CREATE TABLE `userpost` (`id` INTEGER AUTO_INCREMENT , `user_id` INTEGER ,
`post_id` INTEGER , PRIMARY KEY (`id`) )
A continuación, utiliza consultas internas para encontrar los objetos del Product
asociados con cada Purchase
y viceversa. Consulte el método lookupPostsForUser()
en el proyecto de ejemplo para obtener más detalles.
Se ha pensado y se ha trabajado en el diseño para hacer esto de forma automática, pero en este momento ORMLite solo maneja las relaciones internas de uno a varios.
Ok, supongo que la única manera de hacerlo es crear una tercera tabla Product_Purchase. Está indicado en un http://ormlite.com/docs/example-many .