Hiernate SQL方言

本文针对Hibernate使用过程中遇到的特定SQL方言配置错误进行了详细的说明,包括出现错误的原因及如何正确配置各种数据库对应的Hibernate方言。
如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect)设置不正确。
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'last_insert_id' 不是可以识别的 函数名。RDBMS 方言
DB2 org.hibernate.dialect.DB2Dialect

DB2 AS/400 org.hibernate.dialect.DB2400Dialect

DB2 OS390 org.hibernate.dialect.DB2390Dialect

PostgreSQL org.hibernate.dialect.PostgreSQLDialect

MySQL org.hibernate.dialect.MySQLDialect

MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect

MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect

Oracle (any version) org.hibernate.dialect.OracleDialect

Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect

Sybase org.hibernate.dialect.SybaseDialect

Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
SAP DB org.hibernate.dialect.SAPDBDialect

Informix org.hibernate.dialect.InformixDialect

HypersonicSQL org.hibernate.dialect.HSQLDialect

Ingres org.hibernate.dialect.IngresDialect

Progress org.hibernate.dialect.ProgressDialect

Mckoi SQL org.hibernate.dialect.MckoiDialect

Interbase org.hibernate.dialect.InterbaseDialect

Pointbase org.hibernate.dialect.PointbaseDialect

FrontBase org.hibernate.dialect.FrontbaseDialect

Firebird org.hibernate.dialect.FirebirdDialect

[转]http://shen198623.iteye.com/blog/245358
### 下载Hibernate配置文件或示例 对于获取Hibernate及其配置文件,通常可以通过官方渠道或其他可靠的资源来获得。当提到通过Maven项目基础设施创建并集成Hibernate时,在添加JBoss仓库之后可以方便地管理依赖项[^2]。 为了具体展示如何下载或构建一个基本的Hibernate配置文件`hibernate.cfg.xml`以及映射文件`.hbm.xml`,下面提供了一个基于MySQL数据库的例子: #### 创建 `hibernate.cfg.xml` 此文件位于项目的`src/main/resources`目录下,用于定义连接到特定数据库所需的参数以及其他全局设置。 ```xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC</property> <property name="connection.username">root</property> <property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <!-- Names of the entity mapping files --> <mapping resource="Stock.hbm.xml"/> </session-factory> </hibernate-configuration> ``` #### 定义实体类与映射文件 假设有一个名为`Stock`的数据表,则相应的Java模型类和对应的XML映射文件如下所示: ##### Java Model Class (`Stock.java`) ```java package com.example.model; public class Stock { private Integer stockId; private String stockCode; private String stockName; public Integer getStockId() { return this.stockId; } public void setStockId(Integer stockId) { this.stockId = stockId; } public String getStockCode() { return this.stockCode; } public void setStockCode(String stockCode) { this.stockCode = stockCode; } public String getStockName() { return this.stockName; } public void setStockName(String stockName) { this.stockName = stockName; } } ``` ##### XML Mapping File (`Stock.hbm.xml`) ```xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.example.model"> <class name="Stock" table="STOCK"> <id column="STOCK_ID" type="integer" name="stockId"> <generator class="native"/> </id> <property column="STOCK_CODE" type="string" length="10" not-null="true" name="stockCode"/> <property column="STOCK_NAME" type="string" length="20" not-null="true" name="stockName"/> </class> </hibernate-mapping> ``` 上述例子展示了如何建立一个简单的Hibernate环境,并指定了与之关联的一个数据表结构。这有助于理解如何编写必要的配置文件以实现对象关系映射(ORM)[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值