解决带有索引的会议室中的一些问题

时间:2019-01-19 15:20:35

标签: java android android-room

我正在尝试在房间里做这件事

here the link of the diagram of the database

现在我有这个

Productor.class

    package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Index;
import android.arch.persistence.room.PrimaryKey;

@Entity(indices = @Index(value = "codigo_Pro",unique = true))
public class Productor {
    @PrimaryKey @ColumnInfo(name = "codigo_Pro") private int codigo_Pro;
    @ColumnInfo(name = "nombre_productor") private String nombre_productor;


    public Productor(int codigo_Pro, String nombre_productor) {
        this.codigo_Pro = codigo_Pro;
        this.nombre_productor = nombre_productor;
    }

    public int getCodigo_Pro() {
        return codigo_Pro;
    }

    public String getNombre_productor() {
        return nombre_productor;
    }

}

Area.class

    package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Index;
import android.support.annotation.NonNull;

@Entity(primaryKeys = {"codigo_area","codigo_fic"},
        indices = {@Index(value = {"codigo_area","codigo_fic"},unique = true)})
public class Area {
    @ColumnInfo(name = "codigo_area") @NonNull private String numero_ArC;
    @ColumnInfo(name = "codigo_fic") @NonNull private String codigo_FiC;
    @ColumnInfo(name = "nombre_area") private String nombre_ArC;

    public Area(String numero_ArC,String codigo_FiC, String nombre_ArC) {
        this.numero_ArC = numero_ArC;
        this.nombre_ArC = nombre_ArC;
        this.codigo_FiC = codigo_FiC;
    }

    public String getCodigo_FiC() {
        return codigo_FiC;
    }

    public String getNumero_ArC() {
        return numero_ArC;
    }

    public String getNombre_ArC() {
        return nombre_ArC;
    }

    public void setNumero_ArC(String numero_ArC) {
        this.numero_ArC = numero_ArC;
    }

    public void setNombre_ArC(String nombre_ArC) {
        this.nombre_ArC = nombre_ArC;
    }
}

Inspector.class

package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.Index;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;

import com.google.gson.annotations.SerializedName;

@Entity(indices = @Index(value = "codigo_Ins",unique = true))
public class Inspector {
    @PrimaryKey @ColumnInfo(name = "codigo_Ins") @NonNull private String codigo_Ins;
    private String apellidoPat_Ins;
    private String apellidoMat_Ins;
    private String nombres_Ins;
    private String nombre_Loc;
    private String sexo_Ins;
    private String direccion;
    private int campaña;

    public Inspector(String codigo_Ins, String apellidoPat_Ins, String apellidoMat_Ins, String nombres_Ins, String nombre_Loc, String sexo_Ins, String direccion, int campaña) {
        this.codigo_Ins = codigo_Ins;
        this.apellidoPat_Ins = apellidoPat_Ins;
        this.apellidoMat_Ins = apellidoMat_Ins;
        this.nombres_Ins = nombres_Ins;
        this.nombre_Loc = nombre_Loc;
        this.sexo_Ins = sexo_Ins;
        this.direccion = direccion;
        this.campaña = campaña;
    }

    public String getCodigo_Ins() {
        return codigo_Ins;
    }

    public void setCodigo_Ins(String codigo_Ins) {
        this.codigo_Ins = codigo_Ins;
    }

    public String getApellidoPat_Ins() {
        return apellidoPat_Ins;
    }

    public void setApellidoPat_Ins(String apellidoPat_Ins) {
        this.apellidoPat_Ins = apellidoPat_Ins;
    }

    public String getApellidoMat_Ins() {
        return apellidoMat_Ins;
    }

    public void setApellidoMat_Ins(String apellidoMat_Ins) {
        this.apellidoMat_Ins = apellidoMat_Ins;
    }

    public String getNombres_Ins() {
        return nombres_Ins;
    }

    public void setNombres_Ins(String nombres_Ins) {
        this.nombres_Ins = nombres_Ins;
    }

    public String getNombre_Loc() {
        return nombre_Loc;
    }

    public void setNombre_Loc(String nombre_Loc) {
        this.nombre_Loc = nombre_Loc;
    }

    public String getSexo_Ins() {
        return sexo_Ins;
    }

    public void setSexo_Ins(String sexo_Ins) {
        this.sexo_Ins = sexo_Ins;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public int getCampaña() {
        return campaña;
    }

    public void setCampaña(int campaña) {
        this.campaña = campaña;
    }
}

Pregunta.class

package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.Index;
import android.support.annotation.NonNull;

@Entity(foreignKeys = {@ForeignKey(entity = Area.class,parentColumns = "codigo_area",childColumns = "codigo_area"),
                        @ForeignKey(entity = Area.class,parentColumns = "codigo_fic",childColumns = "codigo_fic")},
        primaryKeys = {"codigo_pregunta","codigo_area","codigo_fic"},
        indices = {@Index(value = {"codigo_pregunta"},unique = true)})
public class Pregunta {

    @ColumnInfo(name = "codigo_pregunta") @NonNull public String  numero_Pre;
    @ColumnInfo(name = "codigo_area") @NonNull public String codigo_area_foraneo;
    @ColumnInfo(name = "codigo_fic") @NonNull public String codigo_fic_foraneo;
    @ColumnInfo(name = "descripcion_pregunta") public String descripcion_Pre;
    @ColumnInfo(name = "puntaje_pregunta") public int puntaje_Pre;
    @ColumnInfo(name = "prioridad_ pregunta") public boolean prioridad_Pre;


    public Pregunta(String numero_Pre, String codigo_area_foraneo, String codigo_fic_foraneo, String descripcion_Pre, int puntaje_Pre, boolean prioridad_Pre) {
        this.numero_Pre = numero_Pre;
        this.descripcion_Pre = descripcion_Pre;
        this.puntaje_Pre = puntaje_Pre;
        this.prioridad_Pre = prioridad_Pre;
        this.codigo_area_foraneo = codigo_area_foraneo;
        this.codigo_fic_foraneo = codigo_fic_foraneo;
    }


    public String getNumero_Pre() {
        return numero_Pre;
    }

    public String getDescripcion_Pre() {
        return descripcion_Pre;
    }

    public int getPuntaje_Pre() {
        return puntaje_Pre;
    }

    public boolean isPrioridad_Pre() {
        return prioridad_Pre;
    }

    public String getCodigo_area_foraneo() {
        return codigo_area_foraneo;
    }

    public String getCodigo_fic_foraneo() {
        return codigo_fic_foraneo;
    }
}

Inspeccion.class

    package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.Index;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;

@Entity(foreignKeys = {@ForeignKey(entity = Inspector.class,parentColumns = "codigo_Ins",childColumns = "codigo_Ins"),
                        @ForeignKey(entity = Productor.class,parentColumns = "codigo_Pro",childColumns = "codigo_Pro")},
                        primaryKeys = {"numero_Pri","codigo_Ins","codigo_Pro","codigo_Cam"},
                        indices = {@Index(value = {"numero_Pri","codigo_Cam"},unique = true),
                        @Index(value = "codigoPro",unique = true),@Index(value = "codigo_Ins",unique = true)})
public class Inspeccion {
    @ColumnInfo(name = "numero_Pri") private int numero_PrI;
    @ColumnInfo(name = "codigo_Cam") private int codigo_Cam;
    @ColumnInfo(name = "codigo_Ins") @NonNull private String codigo_Ins;
    @ColumnInfo(name = "codigo_Pro") private int codigo_Pro;
    @ColumnInfo(name = "programacion") private String programacion;
    @ColumnInfo(name = "fecha") private String fecha;
    @ColumnInfo(name = "estado") private String estado;


    public Inspeccion(int numero_PrI, int codigo_Cam, String codigo_Ins, int codigo_Pro, String programacion, String fecha, String estado) {
        this.numero_PrI = numero_PrI;
        this.codigo_Cam = codigo_Cam;
        this.codigo_Ins = codigo_Ins;
        this.codigo_Pro = codigo_Pro;
        this.programacion = programacion;
        this.fecha = fecha;
        this.estado = estado;
    }

    public int getNumero_PrI() {
        return numero_PrI;
    }

    public int getCodigo_Cam() {
        return codigo_Cam;
    }

    public String getCodigo_Ins() {
        return codigo_Ins;
    }

    public int getCodigo_Pro() {
        return codigo_Pro;
    }

    public String getProgramacion() {
        return programacion;
    }

    public String getFecha() {
        return fecha;
    }

    public String getEstado() {
        return estado;
    }
}

Resultado.class

package com.example.proyecto2avance.Local.Model;

import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;

@Entity(foreignKeys = {@ForeignKey(entity = Inspeccion.class,parentColumns = "codigo_Pro",childColumns = "codigo_Pro"),
                        @ForeignKey(entity = Inspeccion.class,parentColumns = "codigo_Ins",childColumns = "codigo_Ins"),
                        @ForeignKey(entity = Inspeccion.class,parentColumns = "codigo_Cam",childColumns = "codigo_Cam"),
                        @ForeignKey(entity = Inspeccion.class,parentColumns = "numero_Pri",childColumns = "numero_Pri"),
                        @ForeignKey(entity = Pregunta.class,parentColumns = "codigo_pregunta",childColumns = "codigo_pregunta"),
                        @ForeignKey(entity = Pregunta.class,parentColumns = "codigo_area",childColumns = "numero_area"),
                        @ForeignKey(entity = Pregunta.class,parentColumns = "codigo_fic",childColumns = "codigo_fic")},
        primaryKeys = {"numero_Res","codigo_pregunta","codigo_fic","numero_area","codigo_Cam","numero_Prl","codigo_Ins"})
public class Resultado {

    @PrimaryKey(autoGenerate = true)@ColumnInfo(name = "numero_Res") private int numero_Res;
    @ColumnInfo(name = "codigo_pregunta") @NonNull private String numero_Pre;
    @ColumnInfo(name = "codigo_fic") @NonNull private String codigo_FiC;
    @ColumnInfo(name = "numero_area") @NonNull private String numero_ArC;
    @ColumnInfo(name = "codigo_Cam") private int codigo_Cam;
    @ColumnInfo(name = "numero_Prl") private int numero_Prl;
    @ColumnInfo(name = "codigo_Ins") @NonNull private String codigo_Ins;
    @ColumnInfo(name = "codigo_Pro") private int codigo_Pro;
    @ColumnInfo(name = "puntaje_Res") private Double puntaje_Res;
    @ColumnInfo(name = "observacion") private String observacion;


    public Resultado(String numero_Pre, String codigo_FiC, String numero_ArC, int codigo_Cam, int numero_Prl, String codigo_Ins, int codigo_Pro, Double puntaje_Res, String observacion) {
        this.numero_Pre = numero_Pre;
        this.codigo_FiC = codigo_FiC;
        this.numero_ArC = numero_ArC;
        this.codigo_Cam = codigo_Cam;
        this.numero_Prl = numero_Prl;
        this.codigo_Ins = codigo_Ins;
        this.codigo_Pro = codigo_Pro;
        this.puntaje_Res = puntaje_Res;
        this.observacion = observacion;
    }

    public int getNumero_Res() {
        return numero_Res;
    }

    public void setNumero_Res(int numero_Res) {
        this.numero_Res = numero_Res;
    }

    public String getNumero_Pre() {
        return numero_Pre;
    }

    public String getCodigo_FiC() {
        return codigo_FiC;
    }

    public String getNumero_ArC() {
        return numero_ArC;
    }

    public int getCodigo_Cam() {
        return codigo_Cam;
    }

    public int getNumero_Prl() {
        return numero_Prl;
    }

    public String getCodigo_Ins() {
        return codigo_Ins;
    }

    public int getCodigo_Pro() {
        return codigo_Pro;
    }

    public Double getPuntaje_Res() {
        return puntaje_Res;
    }

    public String getObservacion() {
        return observacion;
    }
}

但是我有一些错误和警告

Inspeccion.class -codigo_Ins列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-codigo_Pro列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

Pregunta.class

-codigo_area列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-错误:com.example.proyecto2avance.Local.Model.Resultado有一个外键(codigo_pregunta),它引用com.example.proyecto2avance.Local.Model.Pregunta(codigo_pregunta)但引用了com.example.proyecto2avance.Local.Model .Pregunta在这些列上没有唯一索引,这些列也不是其主键。 SQLite要求对引用的父列具有唯一约束,因此您必须向具有(codigo_pregunta)列的com.example.proyecto2avance.Local.Model.Pregunta添加唯一索引。

Resultado.class

-错误:您不能在一个实体中定义多个主键。如果要声明复合主键,则应使用@ Entity#primaryKeys而不是@PrimaryKey。定义的主键:PrimaryKey [numero_Res,numero_Pre,codigo_FiC,numero_ArC,codigo_Cam,numero_Prl,codigo_Ins],PrimaryKey [numero_Res]

-codigo_Pro列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-codigo_Ins列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-codigo_Cam列引用一个外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-codigo_pregunta列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

-numero_area列引用外键,但它不是索引的一部分。每当修改父表时,这都可能触发全表扫描,因此强烈建议您创建一个覆盖此列的索引。

Area.class

-错误:com.example.proyecto2avance.Local.Model.Pregunta有一个外键(codigo_area),它引用com.example.proyecto2avance.Local.Model.Area(codigo_area)但引用了com.example.proyecto2avance.Local.Model .Area在这些列上没有唯一索引,这些列也不是其主键。 SQLite要求对引用的父列具有唯一约束,因此您必须向具有(codigo_area)列的com.example.proyecto2avance.Local.Model.Area添加唯一索引。

如果您能帮助我,我将不胜感激,我已经尽力了,但是我对此还很陌生,我在等待您的帮助,谢谢

0 个答案:

没有答案