【发布时间】:2020-10-31 02:17:38
【问题描述】:
我在如何编写加入和从应用程序中选择时遇到问题
所以我必须实体应用程序和停用
deactivated 有一个字段:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "application_id")
private Application application;
并且应用程序有:
@Id
private Long id;
我不知道如何用语言来描述这个问题,所以我就粘贴一下 JPQL:
SELECT a FROM applications a LEFT OUTER JOIN deactivated_applications da on a.id = da.application_id WHERE da.filedeactivated=false;
我收到参数的查询代码:
{ CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Application> cq = criteriaBuilder.createQuery(Application.class);
Root<Application> root = cq.from(Application.class);
//SearchQuery to TO SQLsearchQuery to specification, to Predicate
Predicate searchQueryPredicate = null;
if (!searchQuery.getCriteria().isEmpty())
searchQueryPredicate = SqlSearchQuery.of(searchQuery).toSpecification(Application.class).toPredicate(root, cq, criteriaBuilder);}
现在我需要让这个查询在之前的 SQL 查询上运行
【问题讨论】:
-
抱歉标题愚蠢。我不知道怎么问
-
只写查询而不是使用数据库结构使用java对象。
-
问题是:我需要写这个,然后我还收到一个 SearchQuery,它需要在第一个结果上。我可以以某种方式将 2 个查询合并为 1 个吗?比如:Query q2 = entityManager.createNamedQuery("Application.findWithFileActive") Query q1 = entityManager.createQuery(cq.where(searchQueryPredicate)) 和 q1.where(q2) ?
-
没有。要么将其组合成单个查询,要么使用 java.xml 过滤获取的数据。如果你想动态创建查询然后检查 jpa 标准。
-
我正在使用第一个查询的条件,但我无法从条件 Api 中获取第一个。我会用代码更新问题
标签: java hibernate jpa criteria-api criteriaquery