필자는 테이블 (XML 파일에서의 매핑)을 연결하는 추가 fileds와 많은 관계를 맺고있다. 기준 API를 사용하여 제품 이름에 제한을 추가하는 방법은 무엇입니까?Hibernate Criteria API where 절은 many to many 관계이다.
public class Recipe implements Serializable{
private int id_re;
private String name;
private Set<ProductRecipe> listOfRecipe_Product = new HashSet<>(0);
}
public class ProductRecipe implements Serializable{
private ProductRecipeMapping id;
private float quantity;
}
public class ProductRecipeMapping implements Serializable{
private Product product;
private Recipe recipe;
}
public class Product implements Serializable{
private int id_p;
private String name;
}
매핑 :
<class entity-name="recipe" name="Recipe" table="recipe">
<id name="id_re" type="java.lang.Integer">
<column name="id_re" />
<generator class="identity" />
</id>
<set name="listOfRecipe_Product" table="recipe_product" lazy="false" fetch="select" cascade="all">
<key>
<column name="id_re" not-null="true" />
</key>
<one-to-many entity-name="productRecipe" />
</set>
</class>
<class entity-name="productRecipe" name="ProductRecipe" table="recipe_product">
<composite-id name="id" class="ProductRecipeMapping" >
<key-many-to-one name="recipe" entity-name="recipe" column="id_re" />
<key-many-to-one name="product" entity-name="product" column="id_p" />
</composite-id>
<property name="quantity" type="float" column="quantity" />
</class>
<class entity-name="product" name="Product" table="product">
<id name="id_p" type="java.lang.Integer" column="id_p">
<generator class="identity" />
</id>
<property name="name" column="name" type="java.lang.String" not-null="true" length="255"/>
</class>
예를 들어, "
Criteria cr = session.createCriteria(Recipe.class);
cr.add(Restrictions.eq("name", "test"));
하지만 제품의 목록 이름 cr.add 같은 일 (Restrictions.eq ("product.name "모든 조리법을 얻을 모르는 : 나는 이름 테스트와 GET 조리법에 대한 기준을 사용 테스트"));
cr.createCriteria("listOfRecipe_Product")
.createCriteria("id")
.createCriteria("product")
.add(Restrictions.eq("name", "test"));
내가 오류)
1) Restrictions.eq("listOfRecipe_Product.id.product.name", "test")
하지만 난 오류를 org.hibernate.QueryException: could not resolve property: listOfRecipe_Product.id.product.name of: recipe
2를 얻을 :이 문제는 아무것도하지만, 일을 해결하기 위해이 개념을 사용
을 (그러나 작동하지) org.hibernate.QueryException: Criteria objects cannot be created directly on components. Create a criteria on owning entity and use a dotted property to access component property: listOfRecipe_Product.id
더 구체적 사항 : 특정 이름을 가진 제품을 사용 ALLS 레시피를 반환하는 쿼리를 작성 하시겠습니까? 또한 : 당신은 지금까지 무엇을 시도 했습니까? –
주 설명에 예제를 추가했습니다. –
Restrictions.eq ("listOfRecipe_Product.id.product.name", "test")를 사용했지만 org.hibernate.QueryException 오류가 발생했습니다 : listOfRecipe_Product.id.product 속성을 확인할 수 없습니다. 이름 : 요리법 –