Persistencia de una clase Collection con ORMLite en android
Tengo dos clases de configuración como la siguiente. Estoy confundido en cuanto a cuando necesito anotar algo como una colección extranjera y cuando no lo hago. Esto también puede ORMLite
tonto, pero en ninguna parte de la documentación de ORMLite
se dice si se permite o no una colección no extranjera. ¿Qué pasa si tengo una lista de int
s que se autoboxed en Integer
s? ¿Puedo simplemente persistir esto usando un @DatabaseField
estándar @DatabaseField
encima de la Collection
? Una colección extranjera, de acuerdo con ORMLite
, debe tener también referencia para que funcione (una referencia al padre, dada una realtionship de uno a muchos). Para el ejemplo a continuación, estoy asumiendo que debe anotar myBList
como una colección extranjera, así como hacer myA
un objeto extraño, pero ¿cómo podría manejar myStringList
?
He visto código de ejemplo aquí, pero no responde a mis preguntas: http://ormlite.com/docs/examples
- ORMLite para Android no autorefresh objeto extranjero utilizando foreignAutoRefresh
- ¿Es bueno tener un DatabaseManager con todas las funciones de todos los objetos del modelo?
- ¿Dónde encuentro el ApplicationContext necesario para inicializar ORMLite?
- Cómo eliminar un registro de ORMLITE?
- Consulta compleja con SQL COUNT y SUM
public class A { private Set<B> myBList = new HashSet<B>(); private List<String> myStringList = new ArrayList<String>(); private long id; public A(){} public Set<B> getMyBList() { return myBList; } public void setMyBList(Set<B> myBList) { this.myBList = myBList; } public List<String> getMyStringList() { return myStringList; } public void setMyStringList(List<String> myStringList) { this.myStringList = myStringList; } public void setId(long id){ this.id = id; } public long getId(){ return id; } } public class B { private int myInt; private String myString; private A myA; private long id; public B(){} public A getMyA(){ return myA; } public A setMyA(A a){ myA = a; } public int getMyInt() { return myInt; } public void setMyInt(int myInt) { this.myInt = myInt; } public String getMyString() { return myString; } public void setMyString(String myString) { this.myString = myString; } public void setId(long id){ this.id = id; } public long getId(){ return id; } }
- ¿Cómo conectarse a una solicitud pendiente con RoboSpice (Splash> Actividad principal)?
- Cuando agrego un nuevo campo consigo un puntero nulo
- ¿Cómo usar LoaderManager.LoaderCallbacks y CursorLoader para ORMLite?
- Android Studio E / dalvikvm: No se pudo encontrar la clase '.DatabaseHelper', referenciada desde el método .DatabaseManager
- Condición de consulta múltiple en Android usando ORMLITE
- Android ORMLite. LEFT unirse. Dónde cláusula
- ¿Cómo puedo restablecer un número de secuencia autoincrement en sqlite
- Ormlite configuración sin utilizar las actividades de base
@ Robert es correcto. Cuando la hibernación persiste en una colección (o incluso en una matriz), lo hace con tablas adicionales ocultas con identificaciones extranjeras, en otras palabras, colecciones externas ocultas. ORMLite intenta adherirse al principio de KISS y por lo tanto ha definido las colecciones extranjeras "a mano" en su lugar.
He añadido más detalles sobre el almacenamiento de colecciones.
Esto significa que no puede persistir un tipo Integer
porque no hay foreign-id. Además, su código puede definir una colección de colección extranjera Collection<Order>
o ForeignCollection<Order>
. Cualquiera de ellos se establecerá con una ForeignCollection
. ORMLite no admite listas u otros tipos de recopilación.
Si desea guardar una colección (como ArrayList) de objetos en ORMLite, la forma más sencilla es:
@DatabaseField(dataType = DataType.SERIALIZABLE) private SerializedList<MyObject> myObjects;
Y para obtener mi lista de objetos:
public List<MyObject> getMyObjects() { return myObjects; }
- Android onTouch con onClick y onLongClick
- Android parcelable referenciando otra dependencia circular parcelable