1

I'm using hibernate to read my database datas but i'm having a issue with the relationship of the tables. My problems looks like that: mappedBy reference an unknown target entity property and I read all the answers but I keep don't knowing where is the problem with my code. Thats the class:

@Getter
@Setter
@Entity
@Table(name = "grupo_estudo_usuario")
public class EntidadeGrupoEstudoUsuario {

    @Id
    @Column(name = "id_grupo_estudo_usuario")
    private int idGrupoEstudoUsuario;

    @ManyToOne
    @JoinColumn(name = "id_grupo_estudo")
    private EntidadeGrupoDeEstudos idGrupoDeEstudos;
    
    @ManyToOne
    @JoinColumn(name = "id_usuario")
    private EntidadeUsuario usuario;
    
    @Column(name = "administrador")
    private boolean administrador;
    
    
}

@Getter
@Setter
@Table(name = "grupo_estudo")
@Entity
public class EntidadeGrupoDeEstudos {
    
    @Id
    @Column(name = "id_grupo_estudo")
    private int idGrupo;

    @Column(name = "dt_atz")
    private Date data;

    @Column(name = "nm_grupo")
    private String nomeDoGrupo;

    @Column(name = "descricao")
    private String descricao;
    
    @Column(name = "privado")
    private Boolean privado;

    @OneToMany(mappedBy = "idGrupoDeEstudos") 
    private List<EntidadeGrupoDeEstudos> grupoEstudoUsuario;
     
}

The error message:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.com.agrupauffs.grupo.EntidadeGrupoDeEstudos.idGrupoDeEstudos in br.com.agrupauffs.grupo.EntidadeGrupoDeEstudos.grupoEstudoUsuario

And the sql script:

    CREATE TABLE public.grupo_estudo (
        id_grupo_estudo bigint DEFAULT nextval('public.grupo_estudo_id_seq'::regclass) NOT NULL,
        dt_atz timestamp(0) without time zone,
        nm_grupo character varying,
        descricao character varying,
        privado boolean DEFAULT true NOT NULL
    );
    ALTER TABLE ONLY public.grupo_estudo
        ADD CONSTRAINT grupo_estudo_pk PRIMARY KEY (id_grupo_estudo);
    
    
    CREATE TABLE public.grupo_estudo_usuario (
        id_grupo_estudo bigint NOT NULL,
        id_usuario bigint NOT NULL,
        administrador boolean,
        dt_atz timestamp(0) without time zone,
        id_grupo_estudo_usuario bigint DEFAULT nextval('public.grupo_estudo_usuario_id_seq'::regclass) NOT NULL ); 

ALTER TABLE ONLY public.grupo_estudo_usuario ADD CONSTRAINT grupo_estudo_usuario_pk PRIMARY KEY (id_grupo_estudo_usuario);
ALTER TABLE ONLY public.grupo_estudo_usuario ADD CONSTRAINT grupo_estudo_usuario_fk FOREIGN KEY (id_usuario) REFERENCES public.usuario(id_usuario); 
ALTER TABLE ONLY public.grupo_estudo_usuario ADD CONSTRAINT grupo_estudo_usuario_fk_1 FOREIGN KEY (id_grupo_estudo) REFERENCES public.grupo_estudo(id_grupo_estudo);
Rodrigo R
  • 311
  • 3
  • 11

1 Answers1

0

Your mappedBy should be List<EntidadeGrupoEstudoUsuario> instead of List<EntidadeGrupoDeEstudos>

@OneToMany(mappedBy = "idGrupoDeEstudos") 
private List<EntidadeGrupoEstudoUsuario> grupoEstudoUsuario;

So your Entities will look like

EntidadeGrupoEstudoUsuario Entity

@Getter
@Setter
@Entity
@Table(name = "grupo_estudo_usuario")
public class EntidadeGrupoEstudoUsuario {

    @Id
    @Column(name = "id_grupo_estudo_usuario")
    private int idGrupoEstudoUsuario;

    @ManyToOne
    @JoinColumn(name = "id_grupo_estudo")
    private EntidadeGrupoDeEstudos idGrupoDeEstudos;
    
    @ManyToOne
    @JoinColumn(name = "id_usuario")
    private EntidadeUsuario usuario;
    
    @Column(name = "administrador")
    private boolean administrador;
       
}

EntidadeGrupoDeEstudos Entity

@Getter
@Setter
@Table(name = "grupo_estudo")
@Entity
public class EntidadeGrupoDeEstudos {
    
    @Id
    @Column(name = "id_grupo_estudo")
    private int idGrupo;

    @Column(name = "dt_atz")
    private Date data;

    @Column(name = "nm_grupo")
    private String nomeDoGrupo;

    @Column(name = "descricao")
    private String descricao;
    
    @Column(name = "privado")
    private Boolean privado;

    @OneToMany(mappedBy = "idGrupoDeEstudos") 
    private List<EntidadeGrupoEstudoUsuario> grupoEstudoUsuario;
     
}
SSK
  • 3,444
  • 6
  • 32
  • 59