日期:2014-05-20  浏览次数:20777 次

hibernate 双主键
写代码的过程中遇到这样的问题:
我有一个基础数据表类 Parameter.java 这个表是双主键形式,配置文件如下:
Java code

<class name="lxt.entity.Parameter" table="tb_parameter" catalog="transport">
        <composite-id name="id" class="lxt.entity.ParameterId">
            <key-property name="paramType" type="string">
                <column name="PARAM_TYPE" length="50" />
            </key-property>
            <key-property name="paramKey" type="string">
                <column name="PARAM_KEY" length="50" />
            </key-property>
        </composite-id>
        .
        .
        .


现在有这样的一个问题
我的dao根据id查询方法如下:
Java code

public Object get(Class<?> clazz, Serializable id)
    {
        Object o = getHibernateTemplate().get(clazz, id);

        if (o == null)
        {
            throw new ObjectRetrievalFailureException(clazz, id);
        }

        return o;
    }


写其他的类的时候我知道在service里如下调用:
Java code

public TruckInfo loadTruckById(String truckId) {
        return (TruckInfo) this.truckDao.get(TruckInfo.class, truckId);
    }


现在对于这个双主键该怎么调用呢?
Java code

this.parameterDao.get(Parameter.class, paramType);//Parameter.class里没有paramType这个属性
                                                   //ParameterId.class 这个类没有映射,hibernate找不到



对于这个问题,请高手指点下。

------解决方案--------------------
探讨
写代码的过程中遇到这样的问题:
我有一个基础数据表类 Parameter.java 这个表是双主键形式,配置文件如下:
Java code

<class name="lxt.entity.Parameter" table="tb_parameter" catalog="transport">
<composite-id name="id" class="lxt.entity……

------解决方案--------------------
问题出在,,需要两个参数,,而你传入的是一个参数。。。。还有一个参数你设置为空了。。主键怎么能设置为空?