设计的一张表中,使用String类型做为表的主键ID,使用一个SERIAL字段做为一个数据的编号,这样就可以产生一个自动增加的编号。使用 Hibernate后主键ID使用Hibernate的uuid.hex自动生成没有什么问题,但是SERIAL字段Hibernate hibernatesync自动生成的配置信息却是“type=”ingeger” not-null=”true” length=”4””的属性。这样在开发过程中必须指定数值,这样就不能实现自动增加的愿望。所以修改配置文件为如下的样子:
- <property
- name="xxxxxxxxx"
- column="xxxxxxxxxxxx"
- type="integer"
- update="false"
- insert="false"
- not-null="true"
- length="4"
- />
<property name="xxxxxxxxx" column="xxxxxxxxxxxx" type="integer" update="false" insert="false" not-null="true" length="4" />
这样生成的数据就是会使用数据库自动增加的字段。
存在的知识点有如下两个:
(1)在Hibernate的Mapping文件中,property属性中update和insert两个可选项的默认值都是true,说明在 生成Update和Insert的SQL语句中是否包括这个字段。我在这里使用这两个属性都设为false,这样数据库就会使用SEQUENCE中的数据 了。
(2)在Hibernate hibernatesync生成Mapping文件的时候,如果非ID字段使用SERIAL字段同样会被认为是普通非空的Integer字段。如果是ID 使用SERIAL字段,可以修改generator选项。在PostgreSQL的官方文档中介绍Serial字段是这么说的:serial和 bigserial字段都不是真正意义上的字段,其实是一个符号性的字段,帮助用户表示数据表中的唯一标识性的字段。
- CREATE TABLE tablename (
- colname SERIAL
- );
- CREATE SEQUENCE tablename_colname_seq;
- CREATE TABLE tablename (
- colname integer DEFAULT nextval(’tablename_colname_seq’) NOT NULL
- );
序列是oracle中一种数值会自增的数据对象,不是表中的字段,打开oracle的企业管理器图形操作界面,一看你就知道怎么弄了。或者执行sql语句:create sequence "hibernate_sequence"
在oracle中id的自增一般使用序列,先在oracle中创建一个序列,如ID_SEQ,在映射文件中指定:
<id name="id">
<generator class="sequence">
<param name="sequence">ID_SEQ</param>
</generator>
</id>
使 用“native”必须要数据库的支持,要在数据库中设置好id的自增,才能使用,对于oracle来说,使用“native”方式 时,hibernate自动选择的方式即为“sequence”方式,指定的序列名为“hibernate_sequence”,即要在oracle数据 库中先创建一个名为“hibernate_sequence”的序列。
“ID_SEQ”是在oracle中创建的序列的名称,这个名字当然你可以随便起,但要避免使用oracle的关键字。这一句是指定以该序列生成的值作为id的值。
ant 脚本中 在 建表前加上 <createSequence sequenceName="hibernate_sequence" startValue="6"/>
startValue 表示自增长的 起始值。。。^_^
分享到:
相关推荐
在PostgreSQL数据库管理系统中,获取表名和字段名是数据库管理员和开发人员日常工作中常见的任务。这有助于了解数据库结构,进行数据操作、查询优化或设计新的应用程序。以下是一些关于如何在PostgreSQL中获取这些...
GP(postgreSql)数据库获得字段信息的语句,很实用的语句
在给定的标题和描述中,我们关注的是如何使用Hibernate来连接PostgreSQL数据库,并且提到了一些关键的库文件,如hibernate-junit4.0、postgresql-8.4-jdbc等。 首先,让我们深入了解每个组件: 1. **Hibernate**:...
解决在springboot+mybatis+postgresql时,数据库字段类型为json时,如何与mybatis进行映射
为了学习和探索 Spring Boot,我构建了一个使用 Spring-Data-JPA、Hibernate、Postgresql 和地理数据构建的简单 Spring-Boot [REST] 应用程序。 该应用程序使用一些地理数据**查询 postgresql 数据库,即: 1. ...
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (表的继承和分区 表的继承和分区 表的继承和分区 表的继承和分区 ) 10 一、表的继承: 一、表的继承: 一、表的继承: .10 PostgreSQL PostgreSQL ...
Hibernate 中的多租户(使用 Hibernate 4.3.7 和 PostgreSql 9.3.1) 这是 Hibernate 和 PostGreSql 中多租户的完整工作示例。 我们实现多租户的方法是 - 在同一数据库中为每个租户使用单独的架构。使用的版本 - ...
本指南将深入探讨如何在Java项目中有效地整合Hibernate与PostgreSQL,实现高效、稳定的数据存储和检索。 一、Hibernate简介 Hibernate是Java世界中的主流ORM框架,它允许开发者以面向对象的方式操作数据库,无需...
包含hibernate-spatial-4.3.jar 、 postgis.jar 、 postgis-jdbc-driver.jar 、postgresql-9.2-1004.jdbc4.jar 、 jts-1.11.jar这五个jar包,当使用到Hibernate的spatial部分的对postgis操作时需要这些。
然而,在使用过程中,可能会遇到一个问题,即在读取MySQL和PostgreSQL数据库时无法获取字段的注释信息。这个问题主要源于相关DLL文件的缺失或不兼容。本文将详细介绍如何通过提供的资源进行修复。 首先,让我们关注...
Spring-Hibernate-PostgreSQL 该示例将使用Maven创建一个简单的Java项目结构,并演示如何在Spring框架中使用Hibernate进行PostgreSQL数据库中的数据操作(插入,选择,更新和删除)。测试应用程序: 在资源文件夹中...
TIMESTAMP数据类型:在PostgreSQL中,TIMESTAMP类型用于存储日期和时间,使用8字节的存储空间。在MySQL中,TIMESTAMP类型用于存储日期和时间,使用4字节的存储空间。 VARCHAR数据类型:在PostgreSQL中,VARCHAR...
在"PostgreSQL12.2中文手册.chm"中,你可以找到关于这个版本的详尽信息,包括安装、配置、使用、管理和优化PostgreSQL数据库的指导。这份中文手册是学习和参考的宝贵资源,特别适合数据库管理员(DBA)、开发者以及...
PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组
PostgreSQL同样支持在线与离线备份、崩溃、时间点和事务恢复,且能实现热备份,其写前日志在数据目录的子目录中维护。 #### 八、JDBC驱动程序 MySQL与PostgreSQL均提供了JDBC驱动程序,允许Java应用程序访问数据库...
postgresql-42.5.0.jar在许多Java框架如Hibernate和Spring等中使用,并很受开发人员的欢迎。它是经过定期更新和改进的,以确保其与最新版本的PostgreSQL数据库兼容,同时提供了丰富的API和文档,方便程序员进行开发...
PostgreSQL 中的存储过程可以使用函数来实现,函数可以封装一组 SQL 语句,以便于重复使用和提高效率。在 .NET 中,可以使用 Npgsql 组件来连接 PostgreSQL 数据库,并使用函数来查询数据。本文详细介绍了 ...
在安装 PostgreSQL 之前,需要创建一个名为 postgres 的用户和组,以便 PostgreSQL 进程可以安全地运行。使用以下命令创建用户和组: ``` groupadd postgres useradd -g postgres postgres ``` 然后,需要配置环境...
标题"Hibernate 中文api 等学习资料"暗示了这是一组针对Hibernate ORM框架的中文学习资源,包括API文档和其他指南,旨在帮助用户更好地理解和使用Hibernate。 描述中的"hibernate orm框架api中文文档,学习资料,...
在探讨Hibernate中所有数据库方言之前,我们先简要回顾一下Hibernate框架本身。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用与各种关系型数据库进行交互。它提供了强大的功能,如对象持久化、查询...