如何实现以下作为JPA条件查询的查询:sql
SELECT
tab1.ID,
tab1.PROJECT_ID,
tab1.EMP_ID,
tab1.MONTH_ID,
tab1.MONTH,
tab2.projectName as ProjName,
tab3.empName as EmpName,
tab1.Table1
FROM
Table1 tab1,Table2 tab2,Table3 tab3
WHERE
Tab1.EMP_ID=tab3.ID AND tab1.PROJECT_ID=tab2.ID
I'm trying to make criteria query but I am unable to apply filters on
that according to my requirement
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Object[]> criteriaQuery =
builder.createQuery(Object[].class);
Root<Table3> tab3 = criteriaQuery.from(Table3.class);
Root<Table1> tab1 = criteriaQuery.from(Table1.class);
Root<Table2> tab2 = criteriaQuery.from(Table2.class);
Path<Object> empPath = empRoot.get("id");
criteriaQuery.where(builder.equal(projectAllocationRoot.get("empId"),
empRoot.get("id")));
criteriaQuery.multiselect(projectAllocationRoot);
criteriaQuery.
Entity: JPA criteria query select from 3 tables based on id
Table 1
long id ;
@OneToMany
Tanle2 projectId ;
@OneToMany
Table3 empId;
JPA标准查询基于id从3个表中选择Table 2 long id; long bpId; String project Name;
JPA条件查询根据id从3个表中选择表3长id;字符串empName;字符串contactNum;
您可以使用FluentJPA实现任何SQL,例如:
java prettyprint-override">FluentQuery query = FluentJPA.SQL((Table1 t1,
Table2 t2,
Table3 t3) -> {
SELECT(t1.getId(), t1.getProjectId(), t1.getEmpId(),
alias(t2.getProjectName(), MultiTab::getProjectName), t3.getEmpName());
FROM(t1, t2, t3);
WHERE(t1.getEmpId() == t3.getId() && t1.getProjectId() == t2.getId());
});
query.createQuery(em, MultiTab.class).getResultList();
生成以下SQL:
SELECT t0.id, t0.project_id, t0.emp_id, t1.projectName AS projName, t2.empName
FROM tab1 t0, tab2 t1, tab3 t2
WHERE ((t0.emp_id = t2.id) AND (t0.project_id = t1.id))
声明的投影类:
@Tuple
@Data // lombok
public class MultiTab {
long id;
long projectId;
long empId;
@Column(name = "projName")
String projectName;
@Column(name = "empName")
String empName;
}
我是criteria api的新手,正在尝试构建一个id匹配id的select查询。 我想建立这样一个:
我需要根据MS SQL Server中定义为datetime2(7)的列,查询给定日期范围内的记录列表。 从HTTP请求中,我将收到如下startDate和endDate。 在数据库中,lastUpdate列中的值存储为2021-05-31 14:12:44.8020000 我正在尝试将传入的查询参数(字符串)转换为java。sql。代码中的日期如下所示 我在这里看到的问题是,我的实际输入日期是2
这是一个示例实体: 现在我创建一个条件查询,将Join作为follwing: 上面的代码可以在PosgreSQL中工作,但不能在Oracle中运行,因为它选择的acctype.name没有出现在group by子句中。 更新: 我想我的问题对你来说不清楚。我的问题不是关于中的PostgreSQL或Oracle行为。我的问题是: 我在子句中使用(这意味着我希望hibernate在中使用Account
我有三张桌子 表A 我需要根据传递的参数将TableA连接到TableB或TableC。ie 我尝试了以下查询 但是,这是给语法错误。有人能帮忙吗? 解决方案:
问题内容: 我有一个带有记录的表,并且有一个名为的行。我插入了太多文章,并且我只希望从每个类别中选择两篇文章。 我试图做这样的事情: 我创建了一个视图: 然后我创建了这个查询: 但这不起作用,只给我两个记录吗? 问题答案: LIMIT仅停止语句返回的结果数。您正在寻找的通常称为分析/窗口/排序功能-MySQL不支持,但您可以使用变量进行仿真: 如果不进行更改,则结果集将包含和值-如果不是这种情况,
我试图从获取数据。总共有9个表格,我必须相应地从所有表格中显示产品列表。 我考虑过使用连接,并尝试了左连接,如下所示: 这里是主表,pid是从tbl2到tbl9的所有表的。 注意:这里我在所有表上使用了来避免长查询,但是在实际的数据库操作中,只提到特定的列来提高性能。 现在实际的问题是,我没有得到所有的记录从表使用左加入。只检索中对应的每个条目的最后一行。 我使用了GROUP BY来避免重复的左连