cao_720
2008-11-08 10:09
浏览 339
已采纳

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>
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • iteye_521 2008-11-08 10:52
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • linpyi 2008-11-08 10:16

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

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 10:16

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

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 10:18

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


    org.hibernate.dialect.Oracle9iDialect


    [/code]

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 10:21

    [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了

    评论
    解决 无用
    打赏 举报
  • hanhg 2008-11-08 10:21

    向下面这样试 试


    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]

    评论
    解决 无用
    打赏 举报
  • iteye_14081 2008-11-08 10:26

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

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 10:41

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

    评论
    解决 无用
    打赏 举报
  • hanhg 2008-11-08 10:47

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

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 10:48

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

    评论
    解决 无用
    打赏 举报
  • iteye_521 2008-11-08 11:08

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题