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

 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; } } 

@ 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.

http://ormlite.com/docs/foreign-collection


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; } 
  • Proguard con OrmLite en Android
  • Ayudante de base de datos Ormlite - onCreate () no llamado
  • CREOOrUpdate de ORMLite parece lento - ¿cuál es la velocidad normal?
  • Persista HashMap en ORMLite
  • Persistente de datos personalizados ORMLite con varias columnas
  • Cómo insertar datos masivos en la base de datos sqlite de android utilizando ormlite eficientemente
  • Android ormlite NoClassDefFoundError en Samsung S4 API 21
  • Guardando objetos extraños anidados con ORMLite en Android
  • Android: niveles de aislamiento de transacciones SQLite (ORMLite)
  • Borrar datos antiguos de caché con robospice ormlite
  • Ormlite interior ensambla en tres tablas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.