我有这样一个JPQL:JPQL不同与字符串函数
select distinct d
from Department d
left join fetch d.employees
当我想去找我Department实体的懒财产之一,明显是行不通的任何更。
select distinct d, substring(d.htmlDescription, 1,400)
from Department d
left join fetch d.employees
该查询返回的部门数量与其中的员工数量一样多。
的substring(d.htmlDescription)
是重要的,因为该属性被定义为CLOB(下PostgreSQL类型TEXT):
@Column(columnDefinition = "TEXT")
@Basic(fetch = FetchType.LAZY)
String htmlBody;
substring函数被翻译在SQL从而限制了数据的转移beetween数据库和web量服务器。
作为一种变通方法,我试图打破查询两个部分:
select d, substring(d.htmlDescription, 1,400)
from Department d where d in (
select distinct d1
from Department d1 left join fetch d1.employees
)
这doestn't的工作,因为JOIN FETCH
不能子查询的FROM
子句中使用。
1.我添加了使用子字符串jpql函数而不是java的原因。 – GaetanZ
2.左连接用于提取。这是我想要在该查询上加载的唯一懒惰关系。没有获取结果是N + 1选择。 – GaetanZ
3.我不明白你的建议。 – GaetanZ