6
respostas

error: annotation type not applicable to this kind of declaration

Olá, boa tarde ! tive esse erro:

error: annotation type not applicable to this kind of declaration
    @ForeignKey(entity = Aluno.class, //entidade de onde esta vindo.
    ^

Não entendi muito bem o erro se fiz igual o do professor.

Código da classe a baixo


package com.projeto.agendaalura.model;

import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.PrimaryKey;

@Entity //Para a classe ser uma entidade e se comunicar com banco de dados.
public class Telefone {

    @PrimaryKey(autoGenerate = true)
    private int id;
    private String numero;
    private TipoTelefone tipo;

    @ForeignKey(entity = Aluno.class, 
            parentColumns = "id", 
            childColumns = "alunoId", 
            onUpdate = ForeignKey.CASCADE, 
            onDelete = ForeignKey.CASCADE) 
    private int alunoId;

    public int getAlunoId() {
        return alunoId;
    }

    public void setAlunoId(int alunoId) {
        this.alunoId = alunoId;
    }

    public int getId() {
        return id;
    }

    public String getNumero() {
        return numero;
    }

    public TipoTelefone getTipo() {
        return tipo;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public void setTipo(TipoTelefone tipo) {
        this.tipo = tipo;
    }
}
6 respostas

Fala Bruno de boa ?

Cara, só pra gente ter certeza, tu tá usando a mesma versão das libs que o instrutor tá usando né ?

Existem algumas diferenças nas versões mais recentes e tals, talvez isso que possa estar gerando o problema pra ti.

Só pra tu ter ideia, agora a anotação de chave estrangeira fica na definição da entidade, pode ser isso que está causando problemas pra ti.

Não, a minha é mais recente mesmo, então eu não devo usar a @ForeignKey certo ?

E coloco a notação em @Entity(entity = Aluno.class, parentColumns = "id", childColumns = "alunoId", onUpdate = ForeignKey.CASCADE, onDelete = ForeignKey.CASCADE) public class Telefone {...

Fiz num projeto aqui :

@Entity(
    foreignKeys = [
        ForeignKey(
            entity = Order::class,
            childColumns = ["order_id"],
            parentColumns = ["id_order"]
        ), ForeignKey(
            entity = Product::class,
            childColumns = ["product_id"],
            parentColumns = ["id_product"]
        )
    ]
)
data class OrderItem(
    @ColumnInfo(name = "id_order_item") @PrimaryKey(autoGenerate = true) val id: Int,
    @ColumnInfo(name = "product_id") val produtoId: Int,
    @ColumnInfo(name = "order_id") val orderId: Int,
    @ColumnInfo(name = "item_count") val quantity: Int
)

Recomendação é tu seguir com a mesma que o instrutor tem para que você consiga fazer os mesmos passos, caso queira seguir com a mais nova, vai ter uns corners cases, tipo esse, que vai ter que editar um pouquinho o conteúdo.

OBG Matheus Brandino, vou fazer aqui, qualquer coisa te aviso se não der certo.

Matheus, por favor vc poderia mostrar em JAVA ? E neste caso as classes Order e Product seriam, no caso do exercício Telefone e Aluno?