2016-04-07 12 views
0

私は4つのテーブルkode_pos、korwil、user、wafatを持っています。 Korwilクラスでは、利用者からの外部キーを押しながらkorwilクラス@OneToOneと@OneToManyで2マッピング、双方向のhibernate - org.hibernate.AnnotationException:未知のmappedBy in:エラー

が、私はこのエラー

組織を得たある意味kode_pos、 に主キーを与えます。 hibernate.AnnotationException:org.ppbni.splatter.model.UserAdmin.korwil、未知の参照プロパティ:不明なmappedBy org.ppbni.splatter.model.Korwil.useradmin`私は、アプリケーションを実行〜

これはthe erd、

enter image description here

これは私のkode_posクラスで、これは私のユーザークラスがある

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 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**/ 
} 

これは私のkorwilクラスであり、これは私のwafatクラスは

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

} 

私のコントローラであり、これは誤りで、

org.hibernate.AnnotationException:org.ppbni.splatter.model.UserAdmin.korwil:不明なmappedBy 、参照されているプロパティが不明:org.ppbni.splatter.model.Korwil.useradmin at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:152) at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java: 1686) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1393) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826) at org.ppbni.splatter.web.controller.UserController。 javaのでsun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) (不明なソース)sun.reflect.DelegatingMethodAccessorImpl.invokeで (不明なソース)でuserDaftarAnggotaPPBNI(UserController.java:97) .lang.reflect.Method.invoke(不明なソース) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest InvocableHandlerMethod.java:132)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethodでorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) (RequestMappingHandlerAdapter.javaで: (AbstractHandlerMethodAdapter.java:745) 80) at org.springframework.web.servlet.DispatcherServlet。doDispatch org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)で(DispatcherServlet.java:925)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)で でorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) (javax.servlet.http.HttpServlet.java:647) at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:812) のjavax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java: 330) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) at org.springframework.security.web.FilterChainP $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) (org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)org.springframeworkで でorg.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) で 。 security.web org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilterでorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) で.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) (RequestCacheAwareFilter.java:45) org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterでorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) (BasicAuthenticationFilter.javaで:150) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFi lter.java:183)org.springframework.security.web.authentication.logout.LogoutFilter.doFilterでorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) (LogoutFilter.javaで : org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilterでorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) (SecurityContextPersistenceFilter.java:87)ORGで で105) 。 (フィルタチェーンのプロパティ)。 doFilter(FilterChainProxy。ジャワ:org.apacheでorg.springframework.web.filter.DelegatingFilterProxy.doFilterでorg.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) (DelegatingFilterProxy.java:259) における160) 。 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve。org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)で を入力します。 java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache。 catalina.core.StandardHostValve.invoke(StandardHostValve.java: 171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina。 (StandardEngineValve.java:118) のorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java: (AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312) at java。 util.concurrent.ThreadPoolExecutor.runWorker(不明なソース) at java.util.concurrent.ThreadPoolExecu TOR $ Worker.run(不明なソース) java.lang.Thread.runで(不明なソース)

任意のヘルプは喜びになります:)

+1

なぜ「MapsId」を使用していますか? http://www.objectdb.com/api/java/jpa/MapsId EmbeddableオブジェクトのIDをマップする場合に使用されます。 –

+0

'UserAdmin'の' private String no_dana; 'の' @ GeneratedValue'は奇妙に見えます。 –

答えて

0

Hibernateが永続して、データベーススキーマを生成中に例外が発生しましたクラス。

私はあなたのマッピングをHibernate 5でチェックしました。そのような例外はありませんでした(私はあなたのコードの他の部分ではわかりません)。私はあなたのHibernateのバージョンを知らない

、Hibernateは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) 
     ); 
    } 

のこの部分で上昇throw new MappingException("Unable to find entity: " + value.getReferencedEntityName())をスローし、それをキャッチするために非常に奇妙なロジックです。そして、エラーメッセージは非常に混乱しています。

otherSideKorwilで、otherSidePropertyKorwil.useradminです。 Hibernateは、エンティティとしてKorwilを考慮しません。考えられる理由:マッピングに追加しないか、エンティティのパッケージをスキャンする際に問題が発生する可能性があります。あなたは、HibernateがなぜUserAdminをエンティティとみなし、Korwilをエンティティとして考慮しないのかを理解する必要があります。

+0

私は休止状態3:DDを使用しています。これは休止状態3のバグですか? –

+0

@splatter_fadli分かりません。 'UserAdmin'への関連付けを削除してみてください。 Hibernateは 'Korwil'を永続的なものと見なしますか? Hibernate 4またはHibernate 5を使用することもできます。 –

+0

私はこれを見つけましたhttp://stackoverflow.com/questions/22466050/hibernate-caused-by-org-hibernate-annotationexception-unknown-mappedby、それは本当ですか?? –

関連する問題