Java JPA CriteriaBuilder如何创建类似join+的查询

Java JPA CriteriaBuilder如何创建类似join+的查询,java,mysql,jpa,orm,criteria,Java,Mysql,Jpa,Orm,Criteria,我有一个SQL查询: 选择s.*,p.name,p.code 从'stock'开始 在s.product_id=p.id上左连接产品p 其中p.name如%q% 我需要使用criteriabuilder创建查询 我是这样开始的: CriteriaBuilder cb=em.getCriteriaBuilder; CriteriaQuery cq=cb.createQueryLong.class; 根库存=cq.fromStock.class; 路径路径=stock.getfilter.getKe

我有一个SQL查询:

选择s.*,p.name,p.code 从'stock'开始 在s.product_id=p.id上左连接产品p 其中p.name如%q% 我需要使用criteriabuilder创建查询

我是这样开始的:

CriteriaBuilder cb=em.getCriteriaBuilder; CriteriaQuery cq=cb.createQueryLong.class; 根库存=cq.fromStock.class; 路径路径=stock.getfilter.getKey//我这里有个错误 字符串likeValue=通配符+值+通配符; 谓词filterCondition=cb.condition; filterCondition=cb.and filterCondition,cb.likepath,likeValue; 请帮忙,如何做得更好

选择不明确。在SQL中选择s.*、p.name、p.code,但在criteria中,您希望使用很长的时间

您的左连接不必被左连接

在标准中,您根本没有加入

一般建议您使用元模型

我想你想要所有的股票,其中至少有一种产品的名称像%value%

如果我的假设是正确的:

CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Stock> cq = cb.createQuery(Stock.class);

Root<Stock> stock = cq.from(Stock.class);
Join<Stock, Product> product = stock.join(Stock_.products);

cq.select(stock);
cq.distinct(true);
cq.where(cb.like(product.get(Product_.name), "%" + value + "%");

return em.createQuery(cq).getResultList();
选择不明确。在SQL中选择s.*、p.name、p.code,但在criteria中,您希望使用很长的时间

您的左连接不必被左连接

在标准中,您根本没有加入

一般建议您使用元模型

我想你想要所有的股票,其中至少有一种产品的名称像%value%

如果我的假设是正确的:

CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Stock> cq = cb.createQuery(Stock.class);

Root<Stock> stock = cq.from(Stock.class);
Join<Stock, Product> product = stock.join(Stock_.products);

cq.select(stock);
cq.distinct(true);
cq.where(cb.like(product.get(Product_.name), "%" + value + "%");

return em.createQuery(cq).getResultList();