当前位置: 首页 > 知识库问答 >
问题:

双向Hibernate-org.hibernate.AnnotationException:错误中的mappedBy未知

郝修为
2023-03-14

我有4个表kode_pos、korwil、user和WAFAT。在Korwil类中,它保存来自user的外键,并将主键交给kode_pos,这意味着在Korwil类@OneToOne和@OneToMany中有两个映射,

我有个错误

org.hibernate.AnnotationException:在:org.ppbni.splatter.model.useradmin.korwil中未知mappedBy,引用的属性未知:org.ppbni.splatter.model.korwil.useradmin`当我运行应用程序时~

package org.ppbni.splatter.model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.MapsId;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.ManyToOne;
import javax.persistence.CascadeType;

@SuppressWarnings("serial")
@Entity
@Table(name="kode_pos")
public class KodePos implements Serializable{

    @Id
    @Column(name="kode_pos", unique=true, nullable=false)
    private String kode_pos;

    @Column(name="kelurahan")
    private String kelurahan;

    @Column(name="kecamatan")
    private String kecamatan;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="kode_korwil")
    private Korwil korwil;

    /**Setter and Getter Methods**/
}
package org.ppbni.splatter.model;

import java.io.Serializable;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.MapsId;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.CascadeType;

@SuppressWarnings("serial")
@Entity
@Table(name="korwil")
public class Korwil implements Serializable{

    @Id
    @Column(name="kode_korwil", unique=true, nullable=false)
    private String kode_korwil;

    @Column(name="nama_korwil")
    private String nama_korwil;

    @Column(name="alias_jabatan")
    private String alias_jabatan;

    @Column(name="jabatan_korwil")
    private String jabatan_korwil;

    @OneToMany(fetch = FetchType.LAZY, mappedBy="korwil")
    private Set<KodePos> kodepos;

    @OneToOne
    @MapsId
    @JoinColumn(name="no_dana")
    private UserAdmin useradmin;

    /**Setter and Getter Methods**/

}
package org.ppbni.splatter.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.OneToOne;
import javax.persistence.CascadeType;

@SuppressWarnings("serial")
@Entity
@Table(name="user")
public class UserAdmin implements Serializable{

    @Id
    @GeneratedValue
    @Column(name="no_dana", unique=true, nullable=false)
    private String no_dana;

    @Column(name="npp")
    private String npp;

    @Column(name="password")
    private String password;

    @OneToOne(mappedBy="useradmin", cascade=CascadeType.ALL)
    private Wafat wafat;

    @OneToOne(mappedBy="useradmin", cascade=CascadeType.ALL)
    private Korwil korwil;

    /**other field**//

    /**setter and gettter methods**/
}
package org.ppbni.splatter.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.MapsId;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@SuppressWarnings("serial")
@Entity
@Table(name="wafat")
public class Wafat implements Serializable{

    @Id
    @Column(name="kode_wafat", unique=true, nullable=false)
    private String kode_wafat;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="tgl_wafat")
    private Date tgl_wafat;

    @Column(name="usia_wafat")
    private int usia_wafat;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="tgl_makam")
    private Date tgl_makam;

    @Column(name="tempat_makam")
    private String tempat_makam;

    @OneToOne
    @MapsId
    @JoinColumn(name="no_dana")
    private UserAdmin useradmin;

    /**Setter and Getter Methods**/
}
@SuppressWarnings("deprecation")
@RequestMapping(value="/user/daftar-anggota-ppbni.html")
public ModelAndView userDaftarAnggotaPPBNI(ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception{

    SessionFactory factory = new Configuration().configure().buildSessionFactory();
    Session session = factory.openSession();

    String nama = request.getParameter("nama");
    String kota = request.getParameter("kota");

    System.out.println(nama);
    System.out.println(kota);

    Query query = session.createQuery("from UserAdmin where (nama_depan = :namadepan or nama_tengah = :namatengah or nama_belakang = :namabelakang) or kota = :kota");
    query.setParameter("namadepan", nama);
    query.setParameter("namatengah", nama);
    query.setParameter("namabelakang", nama);
    query.setParameter("kota", kota);
    System.out.println(query);

    @SuppressWarnings("unchecked")
    List <UserAdmin> result = query.list();

    for(int i=0; i < result.size(); i++){

        model.addObject("result", result);
    }

    session.close();
    factory.close();

    return userDaftarAnggota(model);

}

这就是错误所在,

任何帮助都将是愉快的:)

共有1个答案

丁弘新
2023-03-14

Hibernate通过持久类生成数据库模式时发生异常。

我已经检查了您与Hibernate5的映射--没有任何这样的例外(当然,我不确定您代码的其他部分)。

我不知道你的冬眠版本,看起来像冬眠4。但无论如何,在代码的这一部分中会出现异常

    PersistentClass otherSide = (PersistentClass) persistentClasses.get( value.getReferencedEntityName() );
    Property otherSideProperty;
    try {
        if ( otherSide == null ) {
            throw new MappingException( "Unable to find entity: " + value.getReferencedEntityName() );
        }
        otherSideProperty = BinderHelper.findPropertyByName( otherSide, mappedBy );
    }
    catch (MappingException e) {
        throw new AnnotationException(
                "Unknown mappedBy in: " + StringHelper.qualify( ownerEntity, ownerProperty )
                        + ", referenced property unknown: "
                        + StringHelper.qualify( value.getReferencedEntityName(), mappedBy )
        );
    }
    if ( otherSideProperty == null ) {
        throw new AnnotationException(
                "Unknown mappedBy in: " + StringHelper.qualify( ownerEntity, ownerProperty )
                        + ", referenced property unknown: "
                        + StringHelper.qualify( value.getReferencedEntityName(), mappedBy )
        );
    }
 类似资料:
  • 我使用SpringBoot2.0.0.RC1,Hibernate的最新版本。文件 File 文件 错误: org.springframework.beans.factory.BeanCreationExc0019:错误创建在类路径资源[org/springframe/boo/autoconfiure/orm/jpa/HibernateJpaConfiguration.class]中定义的名称'en

  • 首先,我的课程: 使用者 角色地图。JAVA 当我尝试在服务器上运行这个我有这样的异常:错误创建bean与名称'SessionFactory'定义在ServletContext资源[/WEB-INF/类/base Beans.xml]:调用init方法失败;嵌套的异常org.hibernate.注释异常:映射通过引用一个未知的目标实体属性:com.patpuc.model.ap.users在com

  • 我正在做一个测试项目来学习Hibernate,不幸的是,我得到了这个错误,并查看了其他类似的错误,但是遵循它们并没有解决我的问题。我仍然得到这个错误。 如果有人能检查出哪里出了问题,我真的很想知道我的错误是什么。 我的模型类: } 这是第二个模型类: } 这是我的主要: 这是我的hibernate util类: 公共类HibernateUtil{私有静态最终会议工厂会议工厂=构建会议工厂(); }

  • 我试图通过从域对象创建表来测试一对多映射,但我看到错误mappedBy引用未知的目标实体属性。谁能看一下吗? 谢谢 hibernate.cfg.xml 错误StackTrace 谢谢你的回复。我做了您提到的更改,还做了一些其他更改,比如向main.java添加session.save(flightvenive)和insertable=false,updatable=false以及@JoinColu

  • 问题内容: 我有2个类:User和UserPicture具有1:1的关系。 UserPicture中的“ user”将被加载,而UserPicture中的“ userPicture”则不会加载-我错了吗? 编辑 必须添加,我只是创建一个UserPicture并插入它们(使用现有的userId)-也许我需要在UserPicture中级联“ user”? 问题答案: 您必须映射您的课程。

  • 我有几个从db动态创建的实体类,但是当我用关系注释它们时,我有以下错误 组织。冬眠AnnotationException:mappedBy引用未知的目标实体属性:coma。实体impl。能力标准实施。昏迷中的能力。实体impl。胜任力impl。能力标准执行 我的实体类如下 和 我对冬眠感到困惑和绝望。。。