2010-10-20 77 views
32

我收到以下休眠例外:休眠@ManyToOne引用了未知的实体

@OneToOne or @ManyToOne on Matchup.awayTeam references an unknown entity: Team

简化对决类看起来是这样的:

@Entity public class Matchup implements Serializable 
{ 
    protected Team awayTeam; 

    @ManyToOne 
    @JoinColumn(name="away_team_id") 
    public Team getAwayTeam() { 
     return awayTeam; 
    } 
} 

简化Team类看起来是这样的:

@Entity 
public class Team implements Serializable { 
    protected List<Matchup> matchups; 

    @OneToMany(mappedBy="awayTeam", targetEntity = Matchup.class, 
    fetch=FetchType.EAGER, cascade=CascadeType.ALL) 
    public List<Matchup> getMatchups() { 
     return matchups; 
    } 
} 

备注:

  • Matchup和Team都有子类。我不确定这是否会影响这种情况。
  • 这两个匹配和团队都列在我的persistence.xml中作为 包括在内。
  • 如果我在两个getter方法上都放@ @nsensient注解,则错误 消失。

任何人都可以阐明为什么会发生这种异常?

+0

你有一个TEAM表,是吗?在添加@oneToMany之前,你能够获得任何工作吗? – 2010-10-20 23:37:48

回答

50

我想出了这个问题:我没有将类Team添加到Hibernate AnnotationConfiguration对象中。因此,Hibernate没有认识到这个类。

+0

在我的情况下,我在一个班级忘了@entity Annotation,并且收到了与您相同的错误消息。我只发布这个信息,如果有人做了和我一样的(愚蠢)错误:-) – flipperweid 2016-04-19 13:49:25

+2

你能描述一下如何将类Team添加到Hibernate AnnotationConfiguration对象吗? – Cristian 2017-02-22 20:16:48

+0

我认为他的意思是在@ManyToOne(targetEntity = Team.class)中添加targetEntity – 2017-04-14 13:20:14

4

另一种解决方案:检查以确保引用的类包含您的hibernate.cfg.xml文件。

10

随着hibernate.cfg.xml文件的输入,您需要在引用的类上注释@Entity

0

尝试添加合格的名称(类名),就像这样:

<hibernate-configuration> 
    <session-factory name="java:/hibernate/SessionFactory"> 
        <mapping class="co.com.paq.ClassNAME" /> 
     </session-factory> 
</hibernate-configuration> 

在文件:

META-INF/hibernate.cfg.xml 
1

我在一个项目中使用Spring和Hibernate 4,我发现我们做不是有一个hibernate.cfg.xml文件。相反,我们的豆列出的文件applicationContext.xml这看起来有点像

<bean id="sessionFactory" 
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
     <ref bean="dataSource" /> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.package.Bean</value> 
     </list> 
    </property> 
</bean> 

添加我的豆到列表中解决了这个问题英寸你可以找到更多的信息here

0

以正确的顺序在hibernate.cfg中添加班级。首先映射将由另一个类别引用的文件