1
我是Hibernate的新手,我无法在使用Hibernate注释时创建连接的子类表。Hibernate无法使用注释创建连接的子类表
这是我的代码。
这是主类。
@Entity
@Table(name="CRM_User")
@Inheritance(strategy=InheritanceType.JOINED)
public class UserImp extends BaseModel implements IUser, Serializable
{
... ...
而Staff类扩展了User类。
@Entity
@Table(name="CRM_Staff")
@PrimaryKeyJoinColumn(name="Id")
public class StaffImp extends UserImp implements IStaff, Serializable
{
... ...
而当我运行单元测试时,出现错误。
/* Test get all User */
@Test
public void testGetAllUser()
{
List<IUser> users = (List<IUser>) this.userDAO.getAll("UserImp");
assertEquals(2, users.size());
}
这是错误。
......
19:31:04,880 INFO SchemaExport:281 - schema export complete
19:31:04,918 INFO DefaultTraversableResolver:81 - Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
19:31:05,158 WARN JDBCExceptionReporter:233 - SQL Error: 1146, SQLState: 42S02
19:31:05,158 ERROR JDBCExceptionReporter:234 - Table 'test.crm_staff' doesn't exist
... ...
非常感谢!
是的,hibernate.hbm2ddl.auto被设置为创建。我使用spring来映射实体类。这是我做的。 'AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean(); \t \t annotationSessionFactoryBean.setDataSource(basicDataSource()); annotationSessionFactoryBean.setAnnotatedClasses(新类[] { domainObj.user.UserImp.class, \t \t \t \t \t \t \t \t //domainObj.user.staff.StaffImp.class /*如果我取消注释上述行,我得到另一个错误:12:27:25,168错误JDBCExceptionReporter:234 - '订单子句'中的未知列'children15_.CRM_User.Id'*/ });' – Charles 2011-04-17 02:29:07
Is你有没有理由不使用spring来管理你的bean创建? http://onjava.com/pub/a/onjava/2007/02/08/an-introduction-to-hibernate-3-annotations.html – 2011-04-17 10:30:42