java - 使用 MS SQL hibernate

标签 java sql-server hibernate jpa orm

我正在尝试将 hibernate 与 MS SQL 集成,下面是我从 hibernate 获得的 sql 查询

12:27:44,172 DEBUG [AbstractSaveEventListener] Executing identity-insert immediately
Hibernate: 
    insert 
    into
        aide.dbo.rule
        (appId, ruleName) 
    values
        (?, ?)

导致错误

12:27:44,229 DEBUG [SqlExceptionHelper] Incorrect syntax near the keyword 'rule'. [n/a]
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'rule'.

同样的错误在 MS SQL management studio 中也被抛出

虽然这个命令运行正常

 insert 
    into
        [aide].[dbo].[rule]
        (appId, ruleName) 
    values
        ('rf', 'wfw')

下面是我的 hibernate 配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- <property name="hibernate.bytecode.use_reflection_optimizer">false</property> -->
        <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433</property>
        <property name="hibernate.default_catalog">aide</property>
        <property name="hibernate.default_schema">dbo</property>
        <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="hibernate.connection.username">aide</property>
        <property name="hibernate.connection.password">aide</property>
        <property name="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
        <property name="hibernate.show_sql">true</property><!-- JDBC connection pool (use the 
            built-in) -->
        <property name="hibernate.connection.pool_size">1</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.format_sql">true</property>

        <mapping class="com.****.Rule" />

        <!-- <mapping resource="com/****/Rules.hbm.xml"></mapping> -->
    </session-factory>
</hibernate-configuration>

(从微软网站下载的sqljdbc4.jar) 似乎 hibernate 正在生成 MS SQL 无法理解的查询

最佳答案

RULE 是 SQL Server 保留的 keyword .

如果您需要坚持使用该名称,则需要使用以下命令对其进行转义:

@Table(name="`rule`")

关于java - 使用 MS SQL hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053894/

相关文章:

java - 如何在任何 Pane 中定位 JavaFX 形状?

java - 带布局管理器的 PaintComponent

java - @ServerTimestamp 在 Firebase Firestore 上始终为 null

c# - 如何使用 C# 和 MVC 2 从 SQL 数据库生成 PDF/Excel 文件?

java - 尝试同时保存到两个数据库时,找不到当前线程的 session 错误

hibernate - Grails GORMS 查找集合属性不为空的所有内容

java - 使用 pdfBox 在 java 中创建尺寸为 1700pixels*2200pixels 的 pdf

SQL存储过程执行时间之谜

Python SQLAlchemy pyodbc.错误: ('HY000' , 'The driver did not supply an error!')

java - 在 Hibernate 中遇到 org.hibernate.SessionException : Session is closed! 问题