【问题标题】:Hibernate exception mapping an entity映射实体的休眠异常
【发布时间】:2016-10-18 10:20:26
【问题描述】:

我有这个项目,我必须包含另一个具有 @OneToMany 依赖项的实体,类名为 empresa(企业),但是当代码运行时,我得到了这个异常。

br.com.caelum.vraptor.InterceptionException: org.hibernate.AnnotationException: mappedBy 引用未知目标实体属性:com.assist.model.entity.Empresa.colaboradores 中的 com.assist.model.entity.Colaborador.Empresa br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:69) br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:55) br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$WeldClientProxy.tryToInvoke(未知来源) br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75) br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$$$WeldClientProxy.executeAround(未知来源) br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:85) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83) br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93) br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$$$_WeldClientProxy.start(未知来源) br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:93) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:497) org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232) org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169) org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165) org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119) org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112) org.jboss.weld.event.EventImpl.fire(EventImpl.java:83) br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:123)

我不知道如何解决,是什么原因造成的,我是 java 和 hibernate 的新手,这是我的课程。

实体合作者 =

@SkipSerialization
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Id_Empresa", nullable = false, foreignKey = @ForeignKey(name = "FK_COLABORADOR_EMPRESA"))
public Empresa empresa;

企业实体

@OneToMany(mappedBy = "empresa", targetEntity = Colaborador.class, cascade = CascadeType.ALL, orphanRemoval = true) 私人设置 colaboradores;

一个企业可以有很多同事。

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    首先,创建类并将映射类放入休眠配置。例如:

    <hibernate-configuration>
    
        <session-factory>
            <property name="hibernate.connection.url">${conn-string}</property>
            <property name="hibernate.connection.username">${db-user}</property>
            <property name="hibernate.connection.password">${db-pass}</property>
            <property name="hibernate.dialect">com.ftu.utils.FtuCustomOracleDialect</property>
            <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
            <property name="hibernate.current_session_context_class">thread</property>
    
            <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
            <property name="hibernate.c3p0.min_size">1</property>
            <property name="hibernate.c3p0.max_size">50</property>
            <property name="hibernate.c3p0.timeout">30000</property>
            <property name="hibernate.c3p0.checkoutTimeout">30000</property>
            <property name="hibernate.c3p0.max_statements">1</property>
            <property name="hibernate.c3p0.idle_test_period">100</property>
    
            <property name="show_sql">false</property>
            <property name="format_sql">true</property>
    
            <mapping class="com.assist.model.entity.Empresa " />
        </session-factory>
    </hibernate-configuration>
    

    然后你就做@oneToMany 的relashionship。

    【讨论】:

    • 我在 Hibernate.cfg 中放了一个映射参数,但不像你的例子,看看 看看 colaboradores 映射如何: 它们在同一个包中,所以这应该可以,我不知道他们为什么要 com.assist.model.entity.Empresa.colaboradores。也许是因为我必须在做onetomany relashionshiop之前映射一个类。
    • 是的,我认为这是问题所在,现在它正在工作,我不确定 relashionship 是否正确,但现在正在映射,感谢您的帮助。
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2014-06-20
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多