我正在尝试将实体放在不同的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;
}
答案 0 :(得分:0)
FacebookUser
不是基本类型,不能保存在User
表的列中,它是一个真正的实体,实际上存在于另一个表中。您所拥有的是User
和FacebookUser
之间的一对一关系,您需要将其声明为:
@OneToOne
public FacebookUser getFacebookUser() {
return facebookUser;
}
答案 1 :(得分:0)
您可能希望尝试将依赖项添加为“test”而不仅仅是编译。 来自http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/hbm2ddl-mojo.html:
需要依赖性解析 范围内的工件:test