Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate CriteriaBuilder谓词isMember仅使用实体ID_Hibernate_Jpa - Fatal编程技术网

Hibernate CriteriaBuilder谓词isMember仅使用实体ID

Hibernate CriteriaBuilder谓词isMember仅使用实体ID,hibernate,jpa,Hibernate,Jpa,给定以下实体,如何构造JPA谓词以仅选择那些在其类别集中具有给定ID的类别的项目 @Entity public class Item { @Id private String id; private String name; @JoinTable(name="category_items", joinColumns={@JoinColumn(name="item_id")}, inverseJoinColumns={@JoinColumn(name="cate

给定以下实体,如何构造JPA谓词以仅选择那些在其类别集中具有给定ID的类别的项目

@Entity
public class Item
{
  @Id
  private String id;

  private String name;

  @JoinTable(name="category_items",
    joinColumns={@JoinColumn(name="item_id")},
    inverseJoinColumns={@JoinColumn(name="category_id")})
  private Set<Category> categories;

  /* etc */
}

@Entity
public class Category
{
  @Id
  private String id;

  private String name;

  /* etc */
}
它不在分类表附近

我这样做是因为我想避免在我只需要它的ID(我已经有了)的时候创建或检索一个新的Category实例


谢谢你的帮助

我最终用
join
解决了这个问题,而不是
isMember

EntityManager em = getEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Item> cq = cb.createQuery( Item.class );
Root from = cq.from( Item.class );
From join = from.join( "categories" );
Path<Item> p = join.get( "id" );
Predicate predicate = cb.equal( p, "my_category_id" );
cq.where( predicate );
cq.select( from );
TypedQuery<Item> typedQuery = em.createQuery( cq );
List<Item> resultList = typedQuery.getResultList();
EntityManager em=getEntityManager();
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(Item.class);
Root-from=cq.from(Item.class);
From join=From.join(“类别”);
路径p=join.get(“id”);
谓词=cb.equal(p,“my_category_id”);
cq.where(谓词);
cq.选择(从中);
TypedQuery TypedQuery=em.createQuery(cq);
List resultList=typedQuery.getResultList();
SELECT item.id, item.name FROM item JOIN category_items ON item.id = category_items.item_id WHERE category_items.category_id=?
EntityManager em = getEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Item> cq = cb.createQuery( Item.class );
Root from = cq.from( Item.class );
From join = from.join( "categories" );
Path<Item> p = join.get( "id" );
Predicate predicate = cb.equal( p, "my_category_id" );
cq.where( predicate );
cq.select( from );
TypedQuery<Item> typedQuery = em.createQuery( cq );
List<Item> resultList = typedQuery.getResultList();