Je reçois l'exception Hibernate suivante:
@OneToOne or @ManyToOne on Matchup.awayTeam references an unknown entity: Team
La classe Matchup simplifiée ressemble à ceci:
@Entity public class Matchup implements Serializable
{
protected Team awayTeam;
@ManyToOne
@JoinColumn(name="away_team_id")
public Team getAwayTeam() {
return awayTeam;
}
}
La classe d'équipe simplifiée ressemble à ceci:
@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;
}
}
Remarques:
Quelqu'un peut-il expliquer pourquoi cette exception se produit?
J'ai résolu le problème: je n'ajoutais pas la classe Team à l'objet Hibernate AnnotationConfiguration
. Ainsi, Hibernate ne reconnaissait pas la classe.
En plus de l'entrée dans hibernate.cfg.xml, vous aurez besoin de l'annotation @Entity
sur la classe référencée.
Une autre solution: vérifiez que la classe référencée est incluse dans votre fichier hibernate.cfg.xml
.
Je travaille dans un projet utilisant Spring et Hibernate 4 et j'ai découvert que nous avions pas un fichier hibernate.cfg.xml
. Au lieu de cela, nos beans sont listés dans le fichier applicationContext.xml
qui ressemble un peu à
<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>
L'ajout de mon haricot à la liste a résolu le problème. Vous pouvez trouver plus d'informations ici .
Essayez d’ajouter le nom qualifié (ClassNAME), comme ceci:
<hibernate-configuration>
<session-factory name="Java:/hibernate/SessionFactory">
<mapping class="co.com.paq.ClassNAME" />
</session-factory>
</hibernate-configuration>
Dans le fichier:
META-INF/hibernate.cfg.xml
J'ai eu le même problème et je me débattais depuis deux heures. J'ai finalement découvert que la valeur de la propriété packageToscan et le nom du package lui-même étaient incompatibles entre les majuscules et les minuscules .. Le package était en majuscule (DAO) et que le packageToscan avait la valeur dao. je voulais juste ajouter cela dans le cas où quelqu'un trouve l'aide complète
Ajoutez la classe dans hibernate.cfg
dans le bon ordre. D'abord mapper le fichier qui va être référé par une autre classe