2013-05-14 82 views
2

我是Hibernate的新手,並且在配置時遇到了一些問題。我正在嘗試設置一個只讀連接到一個預先存在的Oracle數據庫。我不想Hibernate來執行任何DML/DDL和修改數據庫架構,但每次我嘗試部署我的項目的時候,這是我看到的消息:防止Hibernate架構更改

INFO: updating schema 
SEVERE: Unsuccessful: create table WILLOEM.SAMPLE_INFO (SAMPLE_ID varchar2(255) not null, CELL_LINE varchar2(255), STUDY_ID varchar2(255), primary key (SAMPLE_ID)) 
SEVERE: ORA-00955: name is already used by an existing object 

無損壞正在這裏進行,因爲表創建失敗,但我不想創建一個數據可能丟失的情況。我如何配置Hibernate以只讀方式進行操作?我是否可以完全防止語句執行,而無需添加缺少特權的新Oracle用戶?

這是我目前的Hibernate配置:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property> 
    <property name="url"><value>jdbc:oracle:thin:@source.db.somewhere.com:1524:WILLOEM</value></property> 
    <property name="username"><value>username</value></property> 
    <property name="password"><value>password</value></property> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource"><ref local="dataSource"/></property> 
    <property name="packagesToScan" value="com.willoem.project.hibernate" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory"><ref local="sessionFactory"/></property> 
</bean> 

回答

4

你可以改變

<prop key="hibernate.hbm2ddl.auto">update</prop> 

<prop key="hibernate.hbm2ddl.auto">validate</prop> 

此驗證模式,但它不會做任何不改變它。

+0

這樣做的竅門,謝謝! – woemler 2013-05-14 15:23:48

+0

不客氣:) – JustDanyul 2013-05-14 15:43:07