基于jpa作为持久层,开发项目的时候,在bean.xml的文件中的数据源配置中设置了
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="ORACLE" /> <property name="showSql" value="true" /> <property name="generateDdl" value="true" /> </bean> </property> </bean>
一般情况下,会在项目启动的过程中,自动检查注解的实体和数据表,如果数据库不存在的标,会根据实体自动生成,但是,今天,遇到了一个奇怪的一个问题,表始终 没有生成,因此,在其他表应用本来须要生成的表的时候,总是报表或视图找不到的错如:
2011-05-06 09:45:56 [org.hibernate.tool.hbm2ddl.SchemaUpdate]-[ERROR] Unsuccessful: alter table r_role_x_menu add constraint FK474DC862E1A553E2 foreign key (menu_id) references p_menu 2011-05-06 09:45:56 [org.hibernate.tool.hbm2ddl.SchemaUpdate]-[ERROR] ORA-00942: 表或视图不存在
解决方案:
查看其他的同一表空间的其他用户下是否有相同的的表,如果存在,有的话删除即可,其实避免这种情况的根本方法是,给Oracle用户都指定一个自定义的表空间,不要使用Users表空间。