je héritage Hibernate pour savoir où la connexion est mon entité mère et MobilePhoneConnection est l'entité élargie. J'ai utilisé une table par stratégie de sous-classe pour le mappage d'héritage. Ceci est mon fichier:héritage Hibernate et HQL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping schema="billing_cms" default-lazy="false" default-cascade="all">
<class name="edu.etf.fuzzy.billingcms.domain.model.Connection"
table="base_connection">
<id name="ID" type="integer" column="id" access="field">
<generator class="increment" />
</id>
<property name="contractStartDate" type="date" column="contract_start_date"
not-null="true" />
<property name="contractEndDate" type="date" column="contract_end_date" />
<property name="contractNumber" type="string" column="contract_number" not-null="true" unique="true"/>
<property name="description" type="string" column="description" />
<property name="creationDate" not-null="true" type="date"
column="date_created" />
<property name="createdBy" type="string" column="created_by" />
<property name="lastUpdatedBy" type="string" column="last_updated_by" />
<property name="lastUpdateDate" type="date" column="last_modification_date" />
<property name="isDeleted" not-null="true" type="boolean"
column="deleted_indicator" />
<property name="isFunctioning" type="boolean"
column="functioning_indicator" />
<property name="assignedUser" type="string" column="assigned_user" />
<many-to-one name="administrativeCenter"
class="edu.etf.fuzzy.billingcms.domain.model.AdministrativeCenter"
column="administrative_center_id"/>
<list name="bills" cascade="all">
<key column="connection_id" />
<index column="idx"></index>
<one-to-many class="edu.etf.fuzzy.billingcms.domain.model.Bill" />
</list>
<joined-subclass name="edu.etf.fuzzy.billingcms.domain.model.MobilePhoneConnection"
table="mobile_phone_connection">
<key column="id"/>
<property name="operator" type="string" column="operator" not-null="true"/>
<property name="userCode" type="string" column="user_code"/>
<property name="packetName" type="string" column="packet_name" not-null="true"/>
<property name="monthExpenseLimit" type="integer" column="month_expense_limit" not-null="true"/>
<property name="isPrepaid" type="boolean" column="is_prepaid" not-null="true"/>
<property name="lineNumber" type="string" column="line_number" not-null="true"/>
<property name="hasGPRS" type="boolean" column="gprs"/>
<property name="hasUMTS" type="boolean" column="umts"/>
<property name="hasEDGE" type="boolean" column="edge"/>
</joined-subclass>
<joined-subclass name="edu.etf.fuzzy.billingcms.domain.model.PSTNConnection"
table="pstn_connection">
<key column="id"/>
<property name="operator" type="string" column="operator" not-null="true"/>
<property name="userCode" type="string" column="user_code"/>
<property name="lineNumber" type="string" column="line_number" not-null="true"/>
<property name="monthExpenseLimit" type="integer" column="month_expense_limit"/>
<property name="isLocalLoop" type="boolean" column="is_local_loop" not-null="true"/>
</joined-subclass>
<joined-subclass name="edu.etf.fuzzy.billingcms.domain.model.InternetConnection"
table="internet_connection">
<key column="id"/>
<property name="provider" type="string" column="provider" not-null="true"/>
<property name="userCode" type="string" column="user_code"/>
<property name="packetName" type="string" column="packet_name" not-null="true"/>
<property name="linkThroughput" type="string" column="link_throughput" not-null="true"/>
<property name="downloadCapacity" type="string" column="download_capacity" not-null="true"/>
<property name="uploadCapacity" type="string" column="upload_capacity" not-null="true"/>
</joined-subclass>
<joined-subclass name="edu.etf.fuzzy.billingcms.domain.model.OuterConnection"
table="outer_connection">
<key column="id"/>
<property name="fromLocation" type="string" column="from_location" not-null="true"/>
<property name="toLocation" type="string" column="to_location" not-null="true"/>
<property name="userCode" type="string" column="user_code"/>
<property name="lineNumber" type="string" column="line_number"/>
<property name="monthExpenseLimit" type="integer" column="month_expense_limit" not-null="true"/>
<property name="capacity" type="string" column="capacity"/>
</joined-subclass>
</class>
<query name="getMobileConnectionByLineNumber">
<![CDATA[from MobilePhoneConnection mb where mb.lineNumber = :lineNumber]]>
</query>
</hibernate-mapping>
Ma question est de savoir comment puis-je écrire sur requête HQL MobilePhoneConnection avec clause WHERE cochant l'une des propriétés héritées (contractStartDate de connexion)? Je suppose que j'ai besoin d'une sorte de jointure, mais je ne sais pas comment y parvenir? Je veux vérifier la date de début du contrat météo MobilePhoneConnection est avant ou après une date précise ...