2010-05-07 3 views
1

J'essaye de mettre une entité dans un projet maven différent. Dans le projet actuel, j'ai:hibernate3-maven-plugin: les entiers dans différents projets maven, hbm2ddl échoue

@Entity 
public class User { 
... 
private FacebookUser facebookUser; 
... 
public FacebookUser getFacebookUser() { 
    return facebookUser; 
} 
... 
public void setFacebookUser(FacebookUser facebookUser) { 
    this.facebookUser = facebookUser; 
} 

Alors FacebookUser (dans un projet Maven différent, qui est une dépendance d'un projet en cours) est défini comme:

@Entity 
public class FacebookUser { 
... 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Long getId() { 
    return id; 
} 

Voici mon maven hibernate3-maven- configuration plugin:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>hibernate3-maven-plugin</artifactId> 
      <version>2.2</version> 
      <executions> 
      <execution> 
       <phase>process-classes</phase> 
       <goals> 
       <goal>hbm2ddl</goal> 
       </goals> 
      </execution> 
      </executions> 
      <configuration> 
      <components> 
       <component> 
       <name>hbm2ddl</name> 
       <implementation>jpaconfiguration</implementation> 
       </component> 
      </components> 
      <componentProperties> 
       <ejb3>false</ejb3> 
       <persistenceunit>Default</persistenceunit> 
       <outputfilename>schema.ddl</outputfilename> 
       <drop>false</drop> 
       <create>true</create> 
       <export>false</export> 
       <format>true</format> 
      </componentProperties> 
      </configuration> 
     </plugin> 

Voici l'erreur que je reçois:

org.hibernate.MappingException: Could not determine type for: com.xxx.facebook.model.FacebookUser, at table: user, for columns: [org.hibernate.mapping.Column(facebook_user)] 

Je sais que FacebookUser est sur le chemin de classe parce que si je fais transitoire utilisateur facebook, projet compile bien:

@Transient 
public FacebookUser getFacebookUser() { 
    return facebookUser; 
} 
+0

Pouvez-vous obtenir au classpath du plugin quand il fonctionne? – Justin

Répondre

0

A FacebookUser n'est pas un type de base et ne peut pas être conservées dans une colonne de la table User , c'est une entité réelle qui est en réalité persistée dans une autre table. Ce que vous avez ici est une à une relation entre User et FacebookUser et vous devez le déclarer comme tel:

@OneToOne 
public FacebookUser getFacebookUser() { 
    return facebookUser; 
} 
+0

Quand je fais @OneToOne je reçois une erreur similaire, il se plaint encore qu'il ne peut pas trouver com.xxx.facebook.model.FacebookUser – Mike

+0

Ne pas dire que ne pas avoir @OneToOne n'est pas un problème ... – Mike

+0

@Mike C'est bizarre. Pouvez-vous montrer comment vous avez annoté 'User'? Toutes les dépendances sont-elles à jour? –

Questions connexes