Estoy tratando de usar una entidad de habitación con una clase de valor:
@JvmInline value class UserToken(val token: String)y la entidad:
@Entity(tableName = TABLE_AUTH_TOKEN) data class TokenEntity( @PrimaryKey val id: Int = 0, val token: UserToken )Obtuve el siguiente error:
error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). public final class TokenEntity { ^¿Es posible usar habitaciones con clase de valor? No pude encontrar nada sobre esto. Gracias
Creo que sí, si puede proporcionar un convertidor de tipo para que lo cambie a algún tipo de tipo de datos primitivo (int, cadena, largo, etc.) cuando necesite almacenarse, y para volver a cambiarlo a su tipo de clase cuando se obtiene de la base de datos.
Puede leer sobre convertidores de tipo desde aquí
Hacer referencia a datos complejos usando Room
aparte de eso, su otra clase debe ser una entidad y unir ambas entidades usando una Relación .
al menos eso es lo que sé sobre cómo usar Room.
¿UserToken siempre tendrá un solo atributo? En este caso, no necesita dos clases, solo use token: String directamente en su clase de entidad;
Si realmente necesita mantener esta clase, tiene dos opciones:
TypeConverter, donde básicamente convertirá el objeto en un json y lo guardará como cadena en la base de datos;
Relación, donde transformará el UserToken en una entidad, y en TokenEntity guardará el tokenId.