左外连接在Hibernate中的多对一关系

时间:2012-05-04 12:04:52

标签: 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="com.xxx.model.BDMasterBean" fetch="join" lazy="false">
        <column name="item_code"/>
    </many-to-one>
    <property name="transDate" column="trans_date" />
     </class>

我有另一个表bd_item,它与com.xxx.model.BDMasterBean类和itemcode作为主键有关系。

在我的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。 bd _item有没有小数nos的item_codes,bd_trans有没有小数和非小数的项目。我如何joi这两个表来获得匹配的行。我得到异常“没有给定标识符的行存在:com.xxx.model.BDMasterBean#1189.0”。怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

我担心,你最好在数据库中清理它。 您必须确保ID列中只允许整数值。 (您还必须转换数据库中的现有值。如果您不知道如何正确执行此操作,那将是另一个问题。)

但是,我知道您可能无法修改数据库架构。 在这种情况下,您必须手动转换id值并查询给定item_code的BDMasterBean。