hibernate映射表报错 unknown Oracle major version [0]

我在MyEclipse中通过hibernate映射表的时候总是报错

在“Generating Artifacts”期间发生了内部错误。
unknown Oracle major version [0]

我查看了MyEclipse的日志文件信息如下:
!ENTRY org.eclipse.core.jobs 4 2 2008-11-08 09:56:42.031
!MESSAGE 在“Generating Artifacts”期间发生了内部错误。
!STACK 0
org.hibernate.HibernateException: unknown Oracle major version [0]
at org.hibernate.dialect.DialectFactory$1.getDialectClass(DialectFactory.java:135)
at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:65)
at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2005)
at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration.readFromJDBC(MEJDBCMetaDataConfiguration.java:72)
at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob$7.execute(GenerateArtifactsJob.java:877)
at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:65)
at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:91)
at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.buildConfiguration(GenerateArtifactsJob.java:858)
at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.run(GenerateArtifactsJob.java:405)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

IDE:MyEclipse 7.0
我查了网上的资料,有的说是在spring中添加方言,但还是出了问题,
我的数据库是Oracle9i2,有的说是把驱动换成ojdbc14.jar,但是问题还是没有解决。
这个问题困扰了我很久 :cry: ,不知道哪位前辈能帮我解决一下,谢谢。

[b]问题补充:[/b]
我spring原来的配置是
org.hibernate.dialect.Oracle9Dialect

我改成了
org.hibernate.dialect.Oracle9iDialect

问题还是没有解决。
[b]问题补充:[/b]
我只是想用IDE通过hibernate映射表,自动生成dao和hbm.xml文件,不用启动服务器吧。
补充一下,我的tomcat是版本是5.5.
[b]问题补充:[/b]
我做的是ssh。我把hibernate放在了spring中进行管理。

以下是我的spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="DataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
        value="oracle.jdbc.driver.OracleDriver">
    </property>
    <property name="url"
        value="jdbc:oracle:thin:@127.0.0.1:1521:db">
    </property>
    <property name="username" value="test"></property>
    <property name="password" value="admin"></property>
</bean>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="DataSource" />
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
        </props>
    </property>
</bean></beans>

Hibernate插件不从Spring配置文件中读取信息,而是使用自己的配置文件,明白了这个你就可以找到这个配置文件对方言进行修改了,呵呵

第一种:
换一下数据库驱动! 右键确定你的项目属性中有加载相应的驱动包
第二种:
1. 在生成表映射文件时,主键生成方式选择”assigned”(由外部分配).
2. 如果选”native”,在数据库中主键生成方式选择”Autoincrement”.

数据库方言指定为
[code="java"]org.hibernate.dialect.Oracle9iDialect
[/code]

[code="java"] <!-- Hibernate SessionFactory -->
p:dataSource-ref="dataSource">


org.hibernate.dialect.Oracle9iDialect


[/code]

[url]http://topic.csdn.net/u/20070910/10/0bdd6ded-de25-4363-9aa4-f74c20aba54a.html[/url]
跟你问题一样,在Spring的sessionFactory配置中加入
[code="java"]org.hibernate.dialect.Oracle9iDialect [/code]
就一切OK了

向下面这样试 试


20
org.hibernate.cache.EhCacheProvider
true
[color=red] [u] <!-- Set dialect to avoid "org.hibernate.HibernateException: unknown Oracle major version [0]" in some environment, e.g. Oracle 9i with WebSphere 5.x -->
org.hibernate.dialect.Oracle9iDialect
[/u][/color]

这个还可能跟你用的web容器的版本有关,你用的tomcat还是jboss,版本?

老大,修改了配置文件需要重启服务器,最好重新发布一下,目前所有的javaee都不支持热部署配置文件的,你确定你重新发布重启了吗?

修改后,重新发布一下,如果还有问题,看一下你的数据库驱动.

呵呵,不好意思,刚看明白你这个问题的意思,原来不是做web开发,而是想用MyEclipse的Hibernate插件功能,这个也简单,因为Hibernate插件使用的另外的配置文件,不会从你这个Spring配置文件中读取信息的,你到你的工程目录下找一个类似.hibernate-console.properties的文件,好像是点儿打头的文件名,eclipse中看不见的,到这个里面把[code="java"]hibernate.dialect=org.hibernate.dialect.Oracle9iDialect[/code]改好就行了,如果没有自己手动添加

如果你是使用MyEclipse的话,在你的工程根目录下面会有一个.myhibernatedata文件,打开这个,看看其中是否有类似的configFile=/你的工程名/src/applicationContext.xml,Hibernate插件就是根据这句知道从哪里找配置项目的,检查一下这个吧,我知道你用SSH框架,但是eclipse插件不管你是不是SSH,它只负责根据配置的文件去特定地方找配置项目