2010-10-20 78 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中添加班級。首先映射將由另一個類別引用的文件