3
respostas

não consigo usar o @Entity nas classes

Class 'Curso' should have [public, protected] no-arg constructor

aqui o meu pede um construtor simples, mas ele ja existe, ele da erro por ter a entidade

public Curso(String nome, String categoria) { this.nome = nome; this.categoria = categoria; }

private Usuario autor; private Curso curso; Basic' attribute type should not be 'Persistence Entity' Entity attribute is not marked with association annotation

inclusive nas outras classes com os objetos intanciados, ele da erro e aparece isso.

3 respostas

Ola Mario.

Poderia enviar o codigo das classes Curso e Usuario para tentar ajudar?

@Entity public class Curso {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String categoria;

public Curso(String nome, String categoria) {
    this.nome = nome;
    this.categoria = categoria;

}


@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Curso other = (Curso) obj;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    return true;
}

public Long getId() {
    return id;
}

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

}

@Entity public class Topico {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;
private String titulo;
private String mensagem;
private LocalDateTime dataCriacao = LocalDateTime.now();
private StatusTopico status = StatusTopico.NAO_RESPONDIDO;
private Usuario autor;
private Curso curso;
private List<Resposta> respostas = new ArrayList<>();

public Topico(String titulo, String mensagem, Curso curso) {
    this.titulo = titulo;
    this.mensagem = mensagem;
    this.curso = curso;
}






@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Topico other = (Topico) obj;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    return true;
}

public Long getId() {
    return id;
}

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

public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public String getMensagem() {
    return mensagem;
}

public void setMensagem(String mensagem) {
    this.mensagem = mensagem;
}

public LocalDateTime getDataCriacao() {
    return dataCriacao;
}

public void setDataCriacao(LocalDateTime dataCriacao) {
    this.dataCriacao = dataCriacao;
}

public StatusTopico getStatus() {
    return status;
}

public void setStatus(StatusTopico status) {
    this.status = status;
}

public Usuario getAutor() {
    return autor;
}

public void setAutor(Usuario autor) {
    this.autor = autor;
}

public Curso getCurso() {
    return curso;
}

public void setCurso(Curso curso) {
    this.curso = curso;
}

public List<Resposta> getRespostas() {
    return respostas;
}

public void setRespostas(List<Resposta> respostas) {
    this.respostas = respostas;
}

}

Ola Mario.

O erro " 'Curso' should have [public, protected] no-arg constructor " é sobre a obrigatoriedade da JPA ter em suas classes Entity um construtor "vazio", aquele padrão. Como na classe tem um construtor, o padrão não existe mais, e dá esse erro.

Por exemplo adicione nessas classes

Curso:

public Curso() {
}

Topico:

public Topico() {
}