简体   繁体   English

休眠键多对一

[英]Hibernate key-many-to-one

I have a problem getting the right data out of the table. 我在从表中获取正确的数据时遇到问题。 The class CompanyActualData contains a member of the class CompanyActualDataPK . 该类CompanyActualData包含类的成员CompanyActualDataPK The class CompanyActualDataPK contains a member of the class Entity and the String isin . CompanyActualDataPK类包含Entity类的成员,而String isin Entity has a String visibility , that I would like to filter for. Entity具有String visibility ,我想对其进行过滤。 I would like to get all CompanyActualData , having a special visibility and a special isin . 我想获取所有具有特殊visibility和特殊isin CompanyActualData

At the moment I struggle creating the right criteria. 目前,我在努力制定正确的标准。

List<CompanyActualData> l = 
    session.createCriteria(CompanyActualData.class)
    .add(Restrictions.eq("companyActualDataPK.isin", isin))
    .createCriteria("companyActualDataPK")
    .add(Restrictions.eq("companyActualDataPK.entity.visible", visibility))
    .list();

I always get the error 我总是得到错误

could not resolve property: companyActualDataPK.entity.visible of: de.ll.web.pm.services.company.actual.CompanyActualData 无法解析属性:companyActualDataPK.entity.visible的以下内容:de.ll.web.pm.services.company.actual.CompanyActualData

Perhaps anybody has a hint. 也许有人暗示。

<class name="de.ll.web.pm.services.company.actual.CompanyActualData" schema = "reporting"   table="company_actual">

        <composite-id name="companyActualDataPK" class="de.ll.web.pm.services.company.actual.CompanyActualDataPK">          
            <key-property name="isin" column="isin"/>
            <key-property name="countryId" column="country_id"/>
            <key-many-to-one  name="entity"     class="de.ll.web.pm.services.entity.Entity" lazy="false" >
                <column name="entity_id"></column> 
            </key-many-to-one> 
        </composite-id>

        <property name="sedol" column="sedol" not-null="false" />
        <property name="valueDouble" column="value_double" not-null="false" />
        <property name="valueString" column="value_string" not-null="false" />
        <property name="date" column="date_id" not-null="false" />

        <many-to-one name="currency"
            class="de.ll.web.pm.services.currency.Currency" lazy="false" insert="false" update="false">
            <column name="currency_id"></column>
        </many-to-one>  
    </class>

> >

<class name="de.ll.web.pm.services.entity.Entity"
        table="md_entity" schema="reporting">

        <id name="entityId" column="entity_id" type="java.lang.String">
            <generator class="native" />
        </id>

        <property name="name" column="name" />
        <property name="description" column="description" />
        <property name="vendor" column="vendor" />
        <property name="visible" column="is_visible" type="java.lang.String"  />
        <property name="currency" column="is_currency" type="java.lang.String" />
</class>

By doing createCriteria("companyActualDataPK") , the Criteria is getting rooted at the PK class. 通过执行createCriteria("companyActualDataPK") ,该Criteria将植根于PK类。 All property names given in following Restriction s will be relative to the CompanyActualDataPK class. 以下Restriction给出的所有属性名称都将相对于CompanyActualDataPK类。

Try doing: 尝试做:

List<CompanyActualData> l = 
    session.createCriteria(CompanyActualData.class)
    .add(Restrictions.eq("companyActualDataPK.isin", isin))
    .add(Restrictions.eq("companyActualDataPK.entity.visible", visibility))
    .list();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM