Tentei fazer conforme proposto pelo professor:
import static androidx.room.ForeignKey.CASCADE;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.PrimaryKey;
@Entity
public class Telefone {
@PrimaryKey(autoGenerate = true)
private int id;
private String numero;
private TipoTelefone tipo;
@ForeignKey(entity = Aluno.class, parentColumns = "id",
childColumns = "alunoId",
onDelete = CASCADE,
onUpdate = CASCADE) // <- solução do professor
private int alunoId;
//getters and setters
Mas quando tento o build:
error: annotation type not applicable to this kind of declaration
@ForeignKey(entity = Aluno.class, parentColumns = "id", childColumns = "alunoId", onDelete = CASCADE, onUpdate = CASCADE)
^
1) Porque não funcionou?
Tentei fazer conforme a documentação, suprimindo o @ForeignKey da classe Telefone e criando uma terceira classe para relacionar os dois objetos:
import androidx.room.Embedded;
import androidx.room.Relation;
import java.util.List;
public class AlunoComTelefones {
@Embedded public Aluno aluno;
@Relation(
parentColumn = "id",
entityColumn = "alunoId"
)
public List<Telefone> telefones;
}
2) É um método equivalente? 3) Como fica o onDelete e onUpdate? Foram explicados na aula, mas só foram definidos no @ForeignKey. Nesse segundo modo, eu não defini.