У меня есть одна сущность с именем ProductTemplate со следующим отображением гибернации
<hibernate-mapping default-cascade="none">
<class name="com.stackoverflow.ProductTemplateImpl" table="PRODUCT_TEMPLATE" dynamic-insert="false" dynamic-update="false">
<composite-id name="productTemplatePk" class="com.stackoverflow.product.ProductTemplatePK">
<key-property name="templateType" type="java.lang.String">
<column name="TEMPLATE_ID" sql-type="VARCHAR2(255)" not-null="true"/>
</key-property>
<key-many-to-one name="product" class="com.stackoverflow.ProductImpl" >
<column name="PROD_ID"/>
</key-many-to-one>
</composite-id>
</class>
</hibernate-mapping>
где ProductTemplatePK - это обычный класс первичного ключа Java.
и другой объект под названием Product со следующим отображением гибернации:
<hibernate-mapping default-cascade="none">
<class name="com.stackoverflow.ProductImpl" table="PRODUCT" dynamic-insert="false" dynamic-update="false">
<id name="id" type="java.lang.String" unsaved-value="null">
<column name="PROD_ID" sql-type="VARCHAR2(255)"/>
<generator class="assigned">
</generator>
</id>
<property name="state" type="java.lang.String">
<column name="PROD_STATE" not-null="true" unique="false"/>
</property>
<property name="nameEn" type="java.lang.String">
<column name="PROD_NAME_EN" not-null="true" unique="false"/>
</property>
</class>
</hibernate-mapping>
Теперь, если я попытался получить все шаблоны productTemplates на основе productId, я могу сделать это, используя следующие критерии гибернации:
Criteria productTemplateCriteria = this.getSession().createCriteria(ProductTemplate.class);
productTemplateCriteria.add(Restrictions.in("productTemplatePk.product.id", "1"));
но я не знаю, как получить эти шаблоны на основе product.nameEn в виде следующего кода:
Criteria productTemplateCriteria = this.getSession().createCriteria(ProductTemplate.class);
productTemplateCriteria.add(Restrictions.in("productTemplatePk.product.nameEn", "Ali"));
генерирует следующую ошибку:
Вызвано: org.hibernate.QueryException: не удалось разрешить свойство: productTemplatePk.product.nameEn of: com.stackoverflow.ProductTemplateImpl.
так, как я могу запросить свойство сущности, которое отображается как часть составного первичного ключа?