3

テーブルpastaIndividualと多対1の関係を持つデータベースに注文オブジェクトを保存しようとしています。

しかし、私はこの例外を受けています:

エラー: NHibernate.Exceptions.GenericADOException: 挿入できませんでした: [FrancosPoS.DBMapping.order][SQL: INSERT INTO 注文 (価格、現金、信用、obs) 値 (?、?、?、?);SELECT LAST_INSERT_ID()] ---> MySql.Data.MySqlClient.MySqlException: SQL 構文にエラーがあります。Near 'order (price, cash, credit, obs) VALUES ('123', 1, 0, 'Nhibernate');SELECT LAST_' at line 1 を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これが私の注文マッピングテーブルです:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="FrancosPoS" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2">
  <class name="order" table="order" lazy="true" >
    <id name="idOrder">
      <generator class="identity" />
    </id>
    <set name="pastaIndividual" table="pasta_individual" cascade="save-update">
      <key column="idPastaI"/>
      <one-to-many class="pastaIndividual"/>
    </set>
    <!--<many-to-one insert="false" update="false" lazy="false" name="pastaIndividual" class="FrancosPoS.DBMapping.pastaIndividual">
      <column name="idPastaI" sql-type="int(11)" not-null="false" />
    </many-to-one>-->
    <many-to-one insert="false" update="false" lazy="false" name="pastaCombo" class="FrancosPoS.DBMapping.pastaCombo">
      <column name="idPastaC" sql-type="int(11)" not-null="false" />
    </many-to-one>
    <many-to-one insert="false" update="false" lazy="false" name="pastaFeast" class="FrancosPoS.DBMapping.pastaFeast">
      <column name="idPastaF" sql-type="int(11)" not-null="false" />
    </many-to-one>
    <many-to-one insert="false" update="false" lazy="false" name="salad" class="FrancosPoS.DBMapping.salad">
      <column name="idSalad" sql-type="int(11)" not-null="false" />
    </many-to-one>
    <many-to-one insert="false" update="false" lazy="false" name="drink" class="FrancosPoS.DBMapping.drink">
      <column name="idDrink" sql-type="int(11)" not-null="false" />
    </many-to-one>
    <property name="price">
      <column name="price" sql-type="decimal(8,4)" not-null="true" />
    </property>
    <property name="cash">
      <column name="cash" sql-type="tinyint(1)" not-null="false" />
    </property>
    <property name="credit">
      <column name="credit" sql-type="tinyint(1)" not-null="false" />
    </property>
    <property name="obs">
      <column name="obs" sql-type="varchar(150)" not-null="false" />
    </property>
  </class>
</hibernate-mapping>

これが私のpastaIndividualマッピングです:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="FrancosPoS" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2">
  <class name="pastaIndividual" table="pasta_individual" lazy="true" >
    <id name="idPastaI">
      <generator class="identity" />
    </id>
    <property name="type">
      <column name="type" sql-type="varchar(25)" not-null="true" />
    </property>
    <property name="price">
      <column name="price" sql-type="decimal(8,4)" not-null="true" />
    </property>
  </class>
</hibernate-mapping>

<set>または だけを使用するためにオーダー マッピングを試みました<many-to-one>が、同じエラーが発生します。

多分私はいくつかの逆のプロパティを欠いていますか?

ありがとう。

4

1 に答える 1

3

注文は予約語です。クラス定義にバックティックを追加するだけで、NHibernate が自動的にテーブル名をエスケープします。

 <class name="order" table="`order`" lazy="true" >
于 2012-04-27T19:05:11.310 に答える