1

我正在尝试将实体放在不同的 Maven 项目中。在当前项目中,我有:

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

然后 FacebookUser (在不同的 Maven 项目中,这是当前项目的依赖项)定义为:

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

这是我的 maven hibernate3-maven-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>

这是我得到的错误:

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

我知道 FacebookUser 在类路径上,因为如果我让 facebook 用户瞬态,项目编译得很好:

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

2 回答 2

0

AFacebookUser不是基本类型,不能在User表的列中持久化,它是一个真实的实体,实际上是在另一个表中持久化的。您在这里拥有的是 and 之间的一对一关系UserFacebookUser您需要将其声明为:

@OneToOne
public FacebookUser getFacebookUser() {
    return facebookUser;
} 
于 2010-05-07T18:12:15.613 回答
0

您可能想尝试将依赖项添加为“测试”,而不仅仅是编译。来自http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/hbm2ddl-mojo.html

需要对范围内的工件进行依赖解析:测试

于 2010-09-09T12:49:44.633 回答