[英]org.hibernate.AnnotationException: Unknown mappedBy in … referenced property unknown
[英]bidirectional hibernate - org.hibernate.AnnotationException: Unknown mappedBy in: error
我有4個表kode_pos,korwil,user和wafat。 在Korwil類中,它持有用戶的外鍵並將主鍵提供給kode_pos,這意味着在korwil類@OneToOne和@OneToMany中有2個映射,
我得到這個錯誤
org.hibernate.AnnotationException:未知,映射於:org.ppbni.splatter.model.UserAdmin.korwil,引用的屬性未知:org.ppbni.splatter.model.Korwil.useradmin`,當我運行應用程序時〜
這是書呆子,
這是我的kode_pos課
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);
}
這是錯誤,
org.hibernate.AnnotationException:未知,映射於:org.ppbni.splatter.model.UserAdmin.korwil,引用的屬性未知:org.ppbni.splatter.model.Korwil.useradmin,位於org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass。 org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1686)的org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1393)的org.hibernate.cfg.Configuration.buildSessionFactory(Configuration的java:152) .java:1826),位於org.ppbni.splatter.web.controller.UserController.userDaftarAnggotaPPBNI(UserController.java:97),位於sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法),位於sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在org的org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)的java.lang.reflect.Method.invoke(未知源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)處。 springframework.web.method.support.InvocableHandl org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)的erMethod.invokeForRequest(InvocableHandlerMethod.java:132)在org.springframework.web.servlet.mvc.method.annotation處。 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)上的RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter處。 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)的org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)的handle(AbstractHandlerMethodAdapter.java:80) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)上的.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)在javax.servlet.http.HttpServl上 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)的java.servlet.http.HttpServlet.service(HttpServlet.java:728)的et.service(HttpServlet.java:647) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)上的.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)在com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java :129)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)在com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)在org.apache.catalina.core處。 org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)處的ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor) java:118)在org.springframework.s org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)上的ecurity.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)在org.springframework.security.web.access上。在org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)處的ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 103)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)在org.springframework.security org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextH)上的.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)位於org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)上的.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)在org.springframework.security.web上org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.VirtualFilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) .java:342)(位於org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105),位於org.springframework.security.web.FilterC org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy)上的org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)上的hainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)的org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)處的org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)處的java.342) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)上的org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)上的.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)處的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在org.apache.catalina.core.Stan org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)上的org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)上的dardContextValve.invoke(StandardContextValve.java:123) .org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)位於org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)位於org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve .java:118)位於org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)位於org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)位於org.apache.coyote。 org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)處的AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.lang.Thread.run(未知酸)上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) ce)
任何幫助將是榮幸:)
Hibernate通過持久類生成數據庫架構時會發生異常。
我已經使用Hibernate 5檢查了您的映射-沒有任何此類異常(當然,我不確定代碼的其他部分)。
我不知道您的Hibernate版本,看起來像Hibernate4。但是無論如何,這部分代碼會出現異常
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() )
並捕獲它是非常奇怪的邏輯。 錯誤消息非常混亂。
otherSide
是您的Korwil
, otherSideProperty
是您的Korwil.useradmin
。 Hibernate並不將Korwil
視為實體。 可能的原因:您沒有將其添加到映射中,或者沒有掃描實體包的問題。 您需要弄清楚為什么Hibernate認為UserAdmin
是一個實體,而Korwil
不是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.