開発者ドキュメント

Hibernateでデータベース予約キーワードを使用する方法?

Hibernateでは、列名としてデータベース予約キーワードを持つテーブルにオブジェクトを保存しようとすると、次のエラーが発生する可能性があります。

ERROR JDBCExceptionReporter:78 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near 'Datadabase reserved keyword....

予約されたキーワード “DESC”

MySQLでは、「DESC」は予約済みのキーワードです。この予約されたキーワードをHibernateで使用する方法を示すいくつかの例を見てみましょう。

Hibernate XMLマッピングファイル

これは、テーブル列のデフォルトのXMLマッピングファイル実装であり、JDBCExceptionが発生します…​

        <property name="desc" type="string" >
            <column name="DESC" length="255" not-null="true"/>
        </property>

解決策

{空} 1。キーワードを角括弧[]で囲みます。

        <property name="desc" type="string" >
            <column name="[DESC]" length="255" not-null="true"/>
        </property>

{空} 2。一重引用符( ‘)を使用して二重引用符( “)を囲みます。

        <property name="desc" type="string" >
            <column name='"DESC"' length="255" not-null="true"/>
        </property>

休止状態の注釈

これは、テーブル列のデフォルトの注釈実装です。JDBCExceptionが発生します…​

        @Column(name = "DESC", nullable = false)
    public String getDesc() {
        return this.desc;
    }

解決策

{空} 1。キーワードを角括弧[]で囲みます。

        @Column(name = "[DESC]", nullable = false)
    public String getDesc() {
        return this.desc;
    }

{空} 2。二重引用符( “)を使用して囲みます。

        @Column(name = "\"DESC\"", nullable = false)
    public String getDesc() {
        return this.desc;
    }

結論

この同じ解決方法は、テーブル名として予約されたキーワードにも適用できます。

モバイルバージョンを終了