0

私のxx.hbm.xmlファイルに私はこれを書きました:

<class name="com.xxx.model.PosDataBDEntryBean" table="BD_Trans">
    <id name="id" column="id">
        <generator class="native"></generator>
    </id>
    <many-to-one name="itemCode" class="com.xxx.model.BDMasterBean" fetch="join" lazy="false">
        <column name="item_code"/>
    </many-to-one>
    <property name="transDate" column="trans_date" />
     </class>

そして、com.xxx.model.BDMasterBeanクラスと主キーとしてのitemcodeとの関係を持つ別のテーブルbd_itemがあります。

そして、私のDAOクラスでは、次のコード行を記述しました。

Criteria criteria = session.createCriteria(PosDataBDEntryBean.class);
         criteria.add(Restrictions.eq("transDate",cDate)).add(Restrictions.eq("location", "BD"));
        posBDEntryGridList = criteria.list();

bd_itemとbd_transの2つのテーブルがあります。bd _itemには10進数のないitem_codesがあり、bd_transには10進数と非10進数のアイテムがあります。これらの2つのテーブルを結合して、一致する行を取得するにはどうすればよいですか。「指定された識別子を持つ行が存在しません:com.xxx.model.BDMasterBean#1189.0」という例外が発生します。これを解決する方法は?

4

1 に答える 1

0

恐れ入りますが、データベースでこれをクリーンアップした方がよいでしょう。ID 列で整数値のみが許可されていることを確認する必要があります。(データベース内の既存の値も変換する必要があります。それを適切に行う方法がわからない場合は、別の問題になります)。

ただし、データベース スキーマを変更できない可能性があることは理解しています。その場合、id 値を手動で変換し、指定された item_code について BDMasterBean を照会する必要があります。

于 2012-05-04T12:21:43.467 に答える