`

hibernate中annotation方式SchemaExport无法生成表的原因(ORA-02261)

阅读更多
引用
主要原因分析如下:

1.ID的注解中, @Column(name = "ID", nullable = false, unique = true, insertable = true, precision = 22, scale = 0)注解中绝对不能出现 unique = true 这个属性

记得:一定要移除unique = true

2.表名可能是Oracle数据库的关键字,比如表名是user,order,这时候建议给表名加前缀,比如:t_user,t_order

3. hibernate.cfg.xml 中一定要配置如下信息(非常关键,全靠这个配置才能生产表结构):

<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>

4. 记得把PoJO添加到 hibernate.cfg.xml 中

<mapping class="com.dvn.li.hiberUse.model.Customer" />
<mapping class="com.dvn.li.hiberUse.model.Order" />

5.Annotation要使用AnnotationConfiguration,XML的格式是使用Configuration的

demo如下:

SchemaExport export = new SchemaExport(new AnnotationConfiguration()
     .configure());
export.create(true, true);


备注:

第一种情况是最难查找出来的,一旦使用了unique = true,程序可以正常的执行倒出表的语句,并且后台打印了SQL语句,可是数据库就是没有,无论怎么刷新也没有;

这时候把SQL复制到数据库中执行,反而会提示:

ORA-02261: 表中已存在这样的唯一关键字或主键

崩溃吧!

移除ID设置中的unique = true就搞定啦!

------------------------------------------------------------------------------

其实在项目的开发中,使用SchemaExport产生数据库表结构基本很少,因为数据库都是在项目Coding前定义好的;

1.Hibernate的SchemaExport接口的主要作用是测试使用;

2.如果你从网上下载了一个工程,但是没有提供建表语句,OK,它就是不错的选择,自动生成表结构!

3.如果希望改变数据库,重新生成数据库表,OK,SchemaExport也可以;比如项目工程用oracle数据,但是在家里调试时候没有安装Oracle数据库,只有MySql数据库,这时候只要修改了hibernate.cfg.xml 的数据库连接地址,用户名,密码,驱动,方言,就可以再生产对应新的数据库的表结构;--------但是,代码却需要一定的改动,因为如果没有采用HQL语句,hibernate是做不到跨数据库滴,比如代码中sql使用了oracle的专有函数,在mysql中就无法运行。

分享到:
评论

相关推荐

    hibernate-annotation

    在传统的Hibernate应用中,我们通常使用XML文件来描述对象和表之间的映射关系。然而,随着Java 5的发布,注解成为了一种更简洁、更直观的元数据表示方式。Hibernate注解就是利用这种方式,将对象的映射信息直接写在...

    hibernate-annotation-helloword

    **hibernate-annotation-helloworld** 是一个基于Hibernate框架,使用注解方式实现的Hello World示例项目。在Java世界中,Hibernate是一个流行的持久层框架,它极大地简化了数据库操作,尤其是在对象关系映射(ORM)...

    hibernate-annotation 所需要的jar包

    在Java开发中,Hibernate与Annotation的结合使用极大地简化了数据持久化的复杂性,使得开发人员无需编写大量的SQL代码。下面将详细介绍Hibernate-Annotation所涉及到的知识点。 1. **Hibernate框架**: Hibernate是...

    Hibernate-Annotation-3.4.0帮助文档

    《Hibernate-Annotation-3.4.0帮助文档》是一份详尽的指南,旨在帮助开发者理解和使用Hibernate ORM框架中的注解功能。Hibernate是Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作。在3.4.0...

    Hibernate Annotation jar

    已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*.hbm....

    hibernate-Annotation.jar

    在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...

    Hibernate Annotation 中文文档

    Hibernate支持同时使用两种方式,以应对XML配置无法满足的需求。 **6. 总结** Hibernate Annotation简化了ORM的配置,提高了开发效率。通过学习和掌握这些注解,开发者可以更轻松地处理数据库操作,同时也为项目...

    hibernate annotation中文文档

    hibernate annotation中文文档

    hibernate 注解 annotation 教程

    hibernate 注解 annotation 教程

    hibernate annotation 中文文档

    ### Hibernate Annotation 中文文档知识点概览 #### 一、创建注解项目 ##### 1.1 系统需求 在创建一个使用 Hibernate 注解的项目之前,需要满足一定的系统环境需求,例如支持 Java 的开发环境、JDK 版本、支持 ...

    hibernate annotation hibernate3

    《Hibernate注解与Hibernate3深度解析》 在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇将深入探讨Hibernate 3版本中的注解使用,帮助开发者理解如何利用注解进行...

    hibernate-validator-annotation-processor-5.1.0.CR1.zip

    【标题】"Hibernate Validator Annotation Processor 5.1.0.CR1" Hibernate Validator 是一个流行的开源验证框架,它基于JSR 303/JSR 349(Bean Validation)标准,为Java应用程序提供了强大的数据验证功能。...

    Hibernate-Annotation中文教程.pdf

    传统上,Hibernate 的配置依赖于外部 XML 文件,而最近发布的几个 Hibernate 版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法,即 Hibernate Annotation 库。借助新的 Hibernate Annotation 库,即可一次性地...

    hibernate 以Annotation方式配置在oracle和mysql

    hibernate 以Annotation方式配置在oracle和mysql hibernate,这里面提供了两个小例子,一个是配置跟oracle数据库相关联时的配置方法,一个是配置跟mysql数据库相关联时的配置方法。

    hibernate-annotation-3.4.0.GA

    例如,使用序列方式生成主键: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long id; // ... } ``` 五、字段注解@Column ...

    hibernate-validator-annotation-processor-4.3.1.final-sources.jar.zip

    解压并查看“hibernate-validator-annotation-processor-4.3.1.final-sources.jar”中的源码,我们可以深入理解其内部实现,包括如何解析和处理验证注解,以及如何生成验证元数据。这对于开发者来说是极其宝贵的...

    Hibernate Annotation

    Hibernate Annotation

Global site tag (gtag.js) - Google Analytics