Resumen del problema de uso de la habitación del jetpack de Android

Resumen del problema de uso de la habitación del jetpack de Android

问题 一 : El directorio de exportación de esquemas no se proporciona al procesador de anotaciones, por lo que no podemos exportar el esquema. Puede proporcionar el room.schemaLocationargumento del procesador de anotaciones O establecer exportSchema en falso.

El directorio de exportación de patrones no se proporciona al procesador de anotaciones, por lo que no podemos exportar patrones. Puede proporcionar el parámetro del procesador de anotaciones "room.schemaLocation" o puede establecer exportSchema en false.

Solución

1. Agregue la siguiente configuración en build.gradle de la aplicación:

      javaCompileOptions {
    
    
            annotationProcessorOptions {
    
    
                arguments = ["room.schemaLocation":
                                     "$projectDir/schemas".toString()]
            }
        }

2. Agregue exportSchema = false en la anotación de la base de datos.

@Database(entities = {
    
    User.class},version = 1,exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
    
    
    public abstract UserDao userDao();

}

la razón:

Al compilar, Room exportará la información del esquema de la base de datos como un archivo JSON (el esquema de exportación predeterminado = esquema de exportación verdadero). Para exportar el esquema, establezca la propiedad del procesador de anotaciones room.schemaLocation en el archivo build.gradle (establezca la ubicación donde se almacena el json).

问题 二 : Hay varios buenos constructores y Room elegirá el constructor sin argumentos. Puede usar la anotación @Ignore para eliminar constructores no deseados.

Solución: cuando la
entidad tiene varios constructores, puede usar la anotación @Ignore para ignorar el resto del constructor y dejar solo uno.

    public User() {
    
    
    }
    @Ignore
    public User(int uid, String firstName, String lastName) {
    
    
        this.uid = uid;
        this.firstName = firstName;
        this.lastName = lastName;
    }

Nota: No puede ignorar todos los constructores, ya sea que no se ignore ninguno de los constructores o el otro.

Supongo que te gusta

Origin blog.csdn.net/guojingbu/article/details/115245007
Recomendado
Clasificación