Hibernate中多对一关系的左外部联接

Hibernate中多对一关系的左外部联接,hibernate,Hibernate,在我的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

在我的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>

我有两张桌子,bd_item和bd_trans。bd_item的item_代码没有十进制编号,bd_trans的item代码有十进制编号和非十进制编号。我如何处理这两个表以获得匹配的行。我遇到异常“不存在具有给定标识符的行:com.xxx.model.BDMasterBean#1189.0”。如何解决这个问题?

恐怕你最好在数据库中清理一下。 必须确保ID列中只允许使用整数值。(您还必须转换数据库中的现有值。如果您不知道如何正确转换,那将是另一个问题)

但是,我理解您可能无法修改数据库模式。 在这种情况下,您必须手动转换id值,并为给定的item_代码查询BDMasterBean

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