我发现(可能)使用Oracle DB的标识符名称来解决我的问题非常有趣 - > http://code.google.com/p/hibernate-naming-strategy-for-oracle/ 但是我很难将它与Spring MVC的项目配合使用。
虽然我在每个地方添加了它是可能的,但不知何故spring没有为我的Hibernate设置命名策略。
servlet-context.xml
的一部分<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="user" value="xxx"/>
<property name="password" value="xxx"/>
<property name="maxPoolSize" value="10"/>
<property name="maxStatements" value="0"/>
<property name="minPoolSize" value="5"/>
</bean>
<bean id="namingStrategy" class="com.execon.OracleNamingStrategy"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="namingStrategy" ref="namingStrategy"/>
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<property name="packagesToScan" value="com.execon.models"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
和 hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.ejb.naming_strategy">com.execon.OracleNamingStrategy</property>
</session-factory>
</hibernate-configuration>
什么似乎是问题?
答案 0 :(得分:5)
以编程方式设置hibernate.ejb.naming_strategy
对我有用。
configuration.setNamingStrategy(YourNamingStrategy.INSTANCE);
答案 1 :(得分:2)
在检查完所有内容的文档之后,获取Spring和Hibernate的源代码,在SessionFactory及其命名策略配置的地方放置断点并通过代码进行调试。