gpt4 book ai didi

java - 查询复合键内部实体属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:08 27 4
gpt4 key购买 nike

我有一个名为 ProductTemplate 的实体,具有以下 hibernate 映射

<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 映射:

<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>

现在,如果我尝试根据 productId 检索所有 productTemplates,我可以使用以下 hibernate 条件来完成:

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:无法解析属性:com.stackoverflow.ProductTemplateImpl 的 productTemplatePk.product.nameEn。

那么如何查询映射为复合主键一部分的实体属性?

最佳答案

我设法通过简单的 HQL 查询解决了这个问题,因为我没有找到任何使用 hibernate API 的方法

这是我使用的 HQL 查询:

 from com.stackoverflow.ProductTemplateImpl productTemplate
where productTemplate.productTemplatePk.product.state not in (:productStates)

但我仍然很想知道是否有任何 Hibernate API 组合可以做到这一点。

关于java - 查询复合键内部实体属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com