2

オブジェクトを挿入しようとしていますが、Error: dehydrating property value for FrancosPoS.DBMapping.order.obs

私はここで探しました

NHibernate: プロパティの脱水エラー - 一体これは何ですか?

NHibernate - プロパティ値の脱水エラー

NHibernateで Index Out of Range を受け取りましたが、どれも機能しませんでした。

複数の列宣言へのマッピングを確認して再確認しましたが、問題は見つかりませんでした。

私の手がかりは、問題が MySQL データベースの bigint とidentity generator. increment脱水エラーに変更すると、Index out of range例外が表示されます。

さらに、これはSession Save通話中に発生しています。incrementジェネレーターでは、エラーは時間で発生しますcommit

これが私の注文xmlマッピングです:

<?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>
<many-to-one lazy="false" name="employee">
  <column name="idEmployee" sql-type="bigint(20)" not-null="false" />
</many-to-one>
<many-to-one lazy="false" name="customer">
  <column name="idCustomer" sql-type="bigint(20)" not-null="false" />
</many-to-one>
<many-to-one lazy="false" name="address">
  <column name="idAddress" sql-type="bigint(20)" not-null="false" />
</many-to-one>
<property name="date">
  <column name="date" sql-type="datetime" not-null="true" />
</property>
<property name="bakingTime">
  <column name="date" sql-type="datetime" not-null="false" />
</property>
<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="houseNumber">
  <column name="houseNumber" sql-type="bigint(20)" not-null="false" />
</property>
<property name="complement">
  <column name="complement" sql-type="bigint(20)" not-null="false" />
</property>
<property name="obs">
  <column name="obs" sql-type="varchar(350)" not-null="false" />
</property>

<bag name="orderPsi" table="ordPsi" cascade="all" inverse="true">
      <key column="idOrdPastaI" />
      <one-to-many class="ordPsi" />
</bag>
</class>
</hibernate-mapping>

そしてcsクラス:

public partial class order {
    public order() { }
    public virtual long idOrder { get; set; }
    public virtual employee employee { get; set; }
    public virtual customer customer { get; set; }
    public virtual address address { get; set; }
    public virtual System.DateTime date { get; set; }
    public virtual System.Nullable<System.DateTime> bakingTime { get; set; }
    public virtual string price { get; set; }
    public virtual System.Nullable<int> cash { get; set; }
    public virtual System.Nullable<int> credit { get; set; }
    public virtual System.Nullable<long> houseNumber { get; set; }
    public virtual System.Nullable<long> complement { get; set; }
    public virtual string obs { get; set; }
    public virtual IList<ordPsi> orderPsi { get; set; }
}

内部例外とそれに続くスタック トレースを次に示します。

"Parameter index is out of range."
at MySql.Data.MySqlClient.MySqlParameterCollection.CheckIndex(Int32 index)
at MySql.Data.MySqlClient.MySqlParameterCollection.GetParameter(Int32 index)
at System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item(Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd, Object value, Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, Boolean[] settable, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index)
4

2 に答える 2

3

データベースでnullになる可能性のあるxmlファイルのすべてのマッピングにコメントして、試行錯誤して解決策を見つけましたが、bakingTimeプロパティに行き詰まりました。

<property name="bakingTime">
  <column name="date" sql-type="datetime" not-null="false" />
</property>

私が推測したように(および他の投稿で他の人が提案したように)、マッピングは間違っています。コピーと貼り付けの問題により [:P] の列名は、それ自体ではなくbakingTime、列を参照しdateます!!!

したがって、これは次のようになります。

<property name="bakingTime">
  <column name="bakingTime" sql-type="datetime" not-null="false" />
</property>

また、この投稿はそれほど新しいものではありませんが、今でも価値があります。

「NHibernate Nullable DateTime の問題 - Ayende」

于 2012-11-24T21:44:28.403 に答える
1

.Net コードの面白い命名スキームですが、idOrder に <id> と <property> の両方が必要なわけではありません。

于 2012-11-24T13:34:22.067 に答える