【问题标题】:Hibernate "mappedby" doesn't finding the foreign keyHibernate“mappedby”没有找到外键
【发布时间】:2021-01-21 01:41:42
【问题描述】:

我正在使用 hibernate 来读取我的数据库数据,但我遇到了表的关系问题。我的问题看起来像这样:mappedBy reference an unknown target entity property 我阅读了所有答案,但我一直不知道我的代码问题出在哪里。 这就是类:

@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;
     
}

错误信息:

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

还有 sql 脚本:

    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);

【问题讨论】:

  • 您好,请检查您发布的课程,好像它们是一样的

标签: java hibernate jpa


【解决方案1】:

您的 mappedBy 应该是 List&lt;EntidadeGrupoEstudoUsuario&gt; 而不是 List&lt;EntidadeGrupoDeEstudos&gt;

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

所以你的实体看起来像

EntidadeGrupoEstudoUsuario 实体

@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 实体

@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;
     
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多